main 8df47befa853 cached
46 files
233.5 KB
111.3k tokens
1 symbols
1 requests
Download .txt
Showing preview only (250K chars total). Download the full file or copy to clipboard to get everything.
Repository: Demonmasterlqx/MoonBit-Code-JAM-2024
Branch: main
Commit: 8df47befa853
Files: 46
Total size: 233.5 KB

Directory structure:
gitextract_8j9h2k2k/

├── .github/
│   └── workflows/
│       └── publish.yml
├── .gitignore
├── .nvmrc
├── README.md
├── dev/
│   └── data.json
├── package.json
├── src/
│   └── build.mts
├── teams/
│   ├── .gitkeep
│   ├── CS赏金猎手/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.wasm
│   │   └── title
│   ├── MoonBit官方样例1/
│   │   └── game.wasm
│   ├── MoonBit官方样例2/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.wasm
│   │   └── title
│   ├── MoonBit官方样例3/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.wasm
│   │   └── title
│   ├── 一个队伍/
│   │   ├── README.md
│   │   └── game.wasm
│   ├── 天地一!屋!大爱盟/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.html
│   │   ├── game.wasm
│   │   ├── src/
│   │   │   ├── antity/
│   │   │   │   ├── antity_memory.mbt
│   │   │   │   ├── moon.pkg.json
│   │   │   │   ├── struct.mbt
│   │   │   │   └── struct_trait.mbt
│   │   │   ├── bitset/
│   │   │   │   ├── bitset.mbt
│   │   │   │   └── moon.pkg.json
│   │   │   ├── interface/
│   │   │   │   ├── gaming.mbt
│   │   │   │   ├── interface_control.mbt
│   │   │   │   └── moon.pkg.json
│   │   │   ├── moon.pkg.json
│   │   │   ├── time_cnt/
│   │   │   │   ├── moon.pkg.json
│   │   │   │   └── timer.mbt
│   │   │   └── top.mbt
│   │   └── title
│   └── 极品杏鲍菇/
│       ├── README.md
│       ├── control
│       ├── game.wasm
│       └── title
└── vite.config.mjs

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/publish.yml
================================================
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: ['main']

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: 'pages'
  cancel-in-progress: false

jobs:
  # Single deploy job since we're just deploying
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'
      - name: build pages
        run: |
          npm i
          npm run build
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: 'dist'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4


================================================
FILE: .gitignore
================================================
/dist
node_modules
meta.json
test.mts
.DS_Store

================================================
FILE: .nvmrc
================================================
v22.1.0


================================================
FILE: README.md
================================================
# 飞机大战

1.游戏玩法与实现:经典的飞机大战,你一看封面就知道这是啥,一进去就知道怎么玩。后端全部采用wasm4。
2.技术亮点:{
    在wasm4特殊的渲染机制下,使用单个优先队列实现多音效多线程的效果;
    项目结构清晰,各部分机制实现明朗易读;
    手动实现了 $bitset$ 以减少内存开销;
}
3.玩法创意性:我们准备了从boss战到多人游戏的创意玩法,但暂未完全实现。
4.美观设计:从游戏图像到游戏音乐全部自主设计。



================================================
FILE: dev/data.json
================================================
{
  "url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2",
  "id": 2076113813,
  "node_id": "PR_kwDOMpbPP857vvuV",
  "html_url": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024/pull/2",
  "diff_url": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024/pull/2.diff",
  "patch_url": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024/pull/2.patch",
  "issue_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues/2",
  "number": 2,
  "state": "closed",
  "locked": false,
  "title": "Test",
  "user": {
    "login": "bzy-debug",
    "id": 71200607,
    "node_id": "MDQ6VXNlcjcxMjAwNjA3",
    "avatar_url": "https://avatars.githubusercontent.com/u/71200607?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/bzy-debug",
    "html_url": "https://github.com/bzy-debug",
    "followers_url": "https://api.github.com/users/bzy-debug/followers",
    "following_url": "https://api.github.com/users/bzy-debug/following{/other_user}",
    "gists_url": "https://api.github.com/users/bzy-debug/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/bzy-debug/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/bzy-debug/subscriptions",
    "organizations_url": "https://api.github.com/users/bzy-debug/orgs",
    "repos_url": "https://api.github.com/users/bzy-debug/repos",
    "events_url": "https://api.github.com/users/bzy-debug/events{/privacy}",
    "received_events_url": "https://api.github.com/users/bzy-debug/received_events",
    "type": "User",
    "site_admin": false
  },
  "body": null,
  "created_at": "2024-09-17T10:52:12Z",
  "updated_at": "2024-09-17T10:52:33Z",
  "closed_at": "2024-09-17T10:52:24Z",
  "merged_at": "2024-09-17T10:52:24Z",
  "merge_commit_sha": "919103f926faea6f18b052c49269c9f59843a639",
  "assignee": null,
  "assignees": [],
  "requested_reviewers": [],
  "requested_teams": [],
  "labels": [],
  "milestone": null,
  "draft": false,
  "commits_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2/commits",
  "review_comments_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2/comments",
  "review_comment_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/comments{/number}",
  "comments_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues/2/comments",
  "statuses_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/statuses/d2241e6f5fd061efdae22cb084b912ec92f30b16",
  "head": {
    "label": "bzy-debug:snake",
    "ref": "snake",
    "sha": "d2241e6f5fd061efdae22cb084b912ec92f30b16",
    "user": {
      "login": "bzy-debug",
      "id": 71200607,
      "node_id": "MDQ6VXNlcjcxMjAwNjA3",
      "avatar_url": "https://avatars.githubusercontent.com/u/71200607?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/bzy-debug",
      "html_url": "https://github.com/bzy-debug",
      "followers_url": "https://api.github.com/users/bzy-debug/followers",
      "following_url": "https://api.github.com/users/bzy-debug/following{/other_user}",
      "gists_url": "https://api.github.com/users/bzy-debug/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/bzy-debug/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/bzy-debug/subscriptions",
      "organizations_url": "https://api.github.com/users/bzy-debug/orgs",
      "repos_url": "https://api.github.com/users/bzy-debug/repos",
      "events_url": "https://api.github.com/users/bzy-debug/events{/privacy}",
      "received_events_url": "https://api.github.com/users/bzy-debug/received_events",
      "type": "User",
      "site_admin": false
    },
    "repo": {
      "id": 857290467,
      "node_id": "R_kgDOMxk24w",
      "name": "MoonBit-Code-JAM-2024",
      "full_name": "bzy-debug/MoonBit-Code-JAM-2024",
      "private": false,
      "owner": {
        "login": "bzy-debug",
        "id": 71200607,
        "node_id": "MDQ6VXNlcjcxMjAwNjA3",
        "avatar_url": "https://avatars.githubusercontent.com/u/71200607?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bzy-debug",
        "html_url": "https://github.com/bzy-debug",
        "followers_url": "https://api.github.com/users/bzy-debug/followers",
        "following_url": "https://api.github.com/users/bzy-debug/following{/other_user}",
        "gists_url": "https://api.github.com/users/bzy-debug/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/bzy-debug/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/bzy-debug/subscriptions",
        "organizations_url": "https://api.github.com/users/bzy-debug/orgs",
        "repos_url": "https://api.github.com/users/bzy-debug/repos",
        "events_url": "https://api.github.com/users/bzy-debug/events{/privacy}",
        "received_events_url": "https://api.github.com/users/bzy-debug/received_events",
        "type": "User",
        "site_admin": false
      },
      "html_url": "https://github.com/bzy-debug/MoonBit-Code-JAM-2024",
      "description": null,
      "fork": true,
      "url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024",
      "forks_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/forks",
      "keys_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/keys{/key_id}",
      "collaborators_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/collaborators{/collaborator}",
      "teams_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/teams",
      "hooks_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/hooks",
      "issue_events_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/issues/events{/number}",
      "events_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/events",
      "assignees_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/assignees{/user}",
      "branches_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/branches{/branch}",
      "tags_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/tags",
      "blobs_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/git/blobs{/sha}",
      "git_tags_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/git/tags{/sha}",
      "git_refs_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/git/refs{/sha}",
      "trees_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/git/trees{/sha}",
      "statuses_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/statuses/{sha}",
      "languages_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/languages",
      "stargazers_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/stargazers",
      "contributors_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/contributors",
      "subscribers_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/subscribers",
      "subscription_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/subscription",
      "commits_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/commits{/sha}",
      "git_commits_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/git/commits{/sha}",
      "comments_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/comments{/number}",
      "issue_comment_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/issues/comments{/number}",
      "contents_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/contents/{+path}",
      "compare_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/compare/{base}...{head}",
      "merges_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/merges",
      "archive_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/{archive_format}{/ref}",
      "downloads_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/downloads",
      "issues_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/issues{/number}",
      "pulls_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/pulls{/number}",
      "milestones_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/milestones{/number}",
      "notifications_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/notifications{?since,all,participating}",
      "labels_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/labels{/name}",
      "releases_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/releases{/id}",
      "deployments_url": "https://api.github.com/repos/bzy-debug/MoonBit-Code-JAM-2024/deployments",
      "created_at": "2024-09-14T09:00:06Z",
      "updated_at": "2024-09-18T07:43:34Z",
      "pushed_at": "2024-09-18T07:56:45Z",
      "git_url": "git://github.com/bzy-debug/MoonBit-Code-JAM-2024.git",
      "ssh_url": "git@github.com:bzy-debug/MoonBit-Code-JAM-2024.git",
      "clone_url": "https://github.com/bzy-debug/MoonBit-Code-JAM-2024.git",
      "svn_url": "https://github.com/bzy-debug/MoonBit-Code-JAM-2024",
      "homepage": "https://moonbitlang.github.io/MoonBit-Code-JAM-2024/",
      "size": 206,
      "stargazers_count": 0,
      "watchers_count": 0,
      "language": "TypeScript",
      "has_issues": false,
      "has_projects": true,
      "has_downloads": true,
      "has_wiki": true,
      "has_pages": false,
      "has_discussions": false,
      "forks_count": 0,
      "mirror_url": null,
      "archived": false,
      "disabled": false,
      "open_issues_count": 0,
      "license": null,
      "allow_forking": true,
      "is_template": false,
      "web_commit_signoff_required": false,
      "topics": [],
      "visibility": "public",
      "forks": 0,
      "open_issues": 0,
      "watchers": 0,
      "default_branch": "main"
    }
  },
  "base": {
    "label": "moonbitlang:main",
    "ref": "main",
    "sha": "51c97c99945168dfc596946594306feeca4fb294",
    "user": {
      "login": "moonbitlang",
      "id": 124848646,
      "node_id": "O_kgDOB3EKBg",
      "avatar_url": "https://avatars.githubusercontent.com/u/124848646?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/moonbitlang",
      "html_url": "https://github.com/moonbitlang",
      "followers_url": "https://api.github.com/users/moonbitlang/followers",
      "following_url": "https://api.github.com/users/moonbitlang/following{/other_user}",
      "gists_url": "https://api.github.com/users/moonbitlang/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/moonbitlang/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/moonbitlang/subscriptions",
      "organizations_url": "https://api.github.com/users/moonbitlang/orgs",
      "repos_url": "https://api.github.com/users/moonbitlang/repos",
      "events_url": "https://api.github.com/users/moonbitlang/events{/privacy}",
      "received_events_url": "https://api.github.com/users/moonbitlang/received_events",
      "type": "Organization",
      "site_admin": false
    },
    "repo": {
      "id": 848744255,
      "node_id": "R_kgDOMpbPPw",
      "name": "MoonBit-Code-JAM-2024",
      "full_name": "moonbitlang/MoonBit-Code-JAM-2024",
      "private": false,
      "owner": {
        "login": "moonbitlang",
        "id": 124848646,
        "node_id": "O_kgDOB3EKBg",
        "avatar_url": "https://avatars.githubusercontent.com/u/124848646?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/moonbitlang",
        "html_url": "https://github.com/moonbitlang",
        "followers_url": "https://api.github.com/users/moonbitlang/followers",
        "following_url": "https://api.github.com/users/moonbitlang/following{/other_user}",
        "gists_url": "https://api.github.com/users/moonbitlang/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/moonbitlang/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/moonbitlang/subscriptions",
        "organizations_url": "https://api.github.com/users/moonbitlang/orgs",
        "repos_url": "https://api.github.com/users/moonbitlang/repos",
        "events_url": "https://api.github.com/users/moonbitlang/events{/privacy}",
        "received_events_url": "https://api.github.com/users/moonbitlang/received_events",
        "type": "Organization",
        "site_admin": false
      },
      "html_url": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024",
      "description": null,
      "fork": false,
      "url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024",
      "forks_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/forks",
      "keys_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/keys{/key_id}",
      "collaborators_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/collaborators{/collaborator}",
      "teams_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/teams",
      "hooks_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/hooks",
      "issue_events_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues/events{/number}",
      "events_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/events",
      "assignees_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/assignees{/user}",
      "branches_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/branches{/branch}",
      "tags_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/tags",
      "blobs_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/git/blobs{/sha}",
      "git_tags_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/git/tags{/sha}",
      "git_refs_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/git/refs{/sha}",
      "trees_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/git/trees{/sha}",
      "statuses_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/statuses/{sha}",
      "languages_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/languages",
      "stargazers_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/stargazers",
      "contributors_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/contributors",
      "subscribers_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/subscribers",
      "subscription_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/subscription",
      "commits_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/commits{/sha}",
      "git_commits_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/git/commits{/sha}",
      "comments_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/comments{/number}",
      "issue_comment_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues/comments{/number}",
      "contents_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/contents/{+path}",
      "compare_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/compare/{base}...{head}",
      "merges_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/merges",
      "archive_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/{archive_format}{/ref}",
      "downloads_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/downloads",
      "issues_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues{/number}",
      "pulls_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls{/number}",
      "milestones_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/milestones{/number}",
      "notifications_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/notifications{?since,all,participating}",
      "labels_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/labels{/name}",
      "releases_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/releases{/id}",
      "deployments_url": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/deployments",
      "created_at": "2024-08-28T10:27:34Z",
      "updated_at": "2024-09-18T07:57:03Z",
      "pushed_at": "2024-09-18T07:57:00Z",
      "git_url": "git://github.com/moonbitlang/MoonBit-Code-JAM-2024.git",
      "ssh_url": "git@github.com:moonbitlang/MoonBit-Code-JAM-2024.git",
      "clone_url": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024.git",
      "svn_url": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024",
      "homepage": "https://moonbitlang.github.io/MoonBit-Code-JAM-2024/",
      "size": 204,
      "stargazers_count": 5,
      "watchers_count": 5,
      "language": "TypeScript",
      "has_issues": true,
      "has_projects": true,
      "has_downloads": true,
      "has_wiki": true,
      "has_pages": true,
      "has_discussions": false,
      "forks_count": 4,
      "mirror_url": null,
      "archived": false,
      "disabled": false,
      "open_issues_count": 0,
      "license": null,
      "allow_forking": true,
      "is_template": false,
      "web_commit_signoff_required": false,
      "topics": [],
      "visibility": "public",
      "forks": 4,
      "open_issues": 0,
      "watchers": 5,
      "default_branch": "main"
    }
  },
  "_links": {
    "self": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2"
    },
    "html": {
      "href": "https://github.com/moonbitlang/MoonBit-Code-JAM-2024/pull/2"
    },
    "issue": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues/2"
    },
    "comments": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/issues/2/comments"
    },
    "review_comments": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2/comments"
    },
    "review_comment": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/comments{/number}"
    },
    "commits": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2/commits"
    },
    "statuses": {
      "href": "https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/statuses/d2241e6f5fd061efdae22cb084b912ec92f30b16"
    }
  },
  "author_association": "MEMBER",
  "auto_merge": null,
  "active_lock_reason": null,
  "merged": true,
  "mergeable": null,
  "rebaseable": null,
  "mergeable_state": "unknown",
  "merged_by": {
    "login": "bzy-debug",
    "id": 71200607,
    "node_id": "MDQ6VXNlcjcxMjAwNjA3",
    "avatar_url": "https://avatars.githubusercontent.com/u/71200607?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/bzy-debug",
    "html_url": "https://github.com/bzy-debug",
    "followers_url": "https://api.github.com/users/bzy-debug/followers",
    "following_url": "https://api.github.com/users/bzy-debug/following{/other_user}",
    "gists_url": "https://api.github.com/users/bzy-debug/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/bzy-debug/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/bzy-debug/subscriptions",
    "organizations_url": "https://api.github.com/users/bzy-debug/orgs",
    "repos_url": "https://api.github.com/users/bzy-debug/repos",
    "events_url": "https://api.github.com/users/bzy-debug/events{/privacy}",
    "received_events_url": "https://api.github.com/users/bzy-debug/received_events",
    "type": "User",
    "site_admin": false
  },
  "comments": 1,
  "review_comments": 0,
  "maintainer_can_modify": false,
  "commits": 1,
  "additions": 14,
  "deletions": 0,
  "changed_files": 2
}


================================================
FILE: package.json
================================================
{
  "type": "module",
  "scripts": {
    "dev": "DEV=true vite",
    "build": "tsx ./src/build.mts"
  },
  "devDependencies": {
    "@types/markdown-it": "^14.1.2",
    "@types/node": "^22.5.5",
    "chokidar": "^4.0.0",
    "markdown-it": "^14.1.0",
    "octokit": "^4.0.2",
    "tsx": "^4.19.1",
    "vite": "^5.4.6",
    "wasm4": "^2.7.0"
  }
}


================================================
FILE: src/build.mts
================================================
import fs from 'node:fs'
import cp from 'node:child_process'
import querystring from 'node:querystring'
import markdownit from 'markdown-it'
import * as octokit from 'octokit'

const ghClient = new octokit.Octokit({
  auth: process.env.GITHUB_TOKEN,
})

const md = markdownit({
  html: true,
  linkify: true,
  typographer: true,
})

function githubBtn(
  authorName: string,
  repoName: string,
  option: { large: boolean },
): string {
  const { large } = option
  return `<iframe src="https://ghbtns.com/github-btn.html?user=${querystring.escape(
    authorName,
  )}&repo=${querystring.escape(repoName)}&type=star&count=true${
    large && '&size=large'
  }" frameborder="0" scrolling="0" width="115" height="32" title="GitHub">
  </iframe>`
}

fs.rmSync('dist', { recursive: true, force: true })
fs.mkdirSync('dist')

async function getPRInfo(teamName: string) {
  const prNumber = getPrNumber(teamName)
  const res = await ghClient.request(
    'GET /repos/{owner}/{repo}/pulls/{pull_number}',
    {
      owner: 'moonbitlang',
      repo: 'MoonBit-Code-JAM-2024',
      pull_number: prNumber,
      headers: {
        'X-GitHub-Api-Version': '2022-11-28',
      },
    },
  )

  return res.data
}

type MetaInfo = {
  teamName: string
  title?: string
  control?: string
  readme?: string
  cover: boolean
  prInfo: Awaited<ReturnType<typeof getPRInfo>>
}

function $(strings: TemplateStringsArray, ...args: string[]): string {
  const command = strings.reduce(
    (prev, current, i) => prev + args[i - 1] + current,
  )
  return cp.execSync(command).toString().trim()
}

function getPrNumber(teamName: string): number {
  const files = fs
    .readdirSync(`teams/${teamName}`, { withFileTypes: true })
    .filter(d => d.isFile())
    .map(d => d.name)

  const latestFile = files.sort((a, b) => {
    const aTime = fs.statSync(`teams/${teamName}/${a}`).ctimeMs
    const bTime = fs.statSync(`teams/${teamName}/${b}`).ctimeMs
    return bTime - aTime
  })[0]

  const commit = $`git log --format=%H teams/${teamName}/${latestFile}`.split(
    '\n',
  )[0]
  const oldestMergeCommit =
    $`git rev-list --reverse --merges ${commit}^..HEAD`.split('\n')[0]
  const mergeCommitMessage = $`git log --format=%B -n 1 ${oldestMergeCommit}`
  const title = mergeCommitMessage.split('\n')[0]
  const prNumber = title.match(/Merge pull request #(\d+)/)?.[1]
  if (prNumber === undefined) {
    throw new Error('No PR number found')
  }
  return Number(prNumber)
}

async function collectMetaInfo(teamName: string): Promise<MetaInfo> {
  const prInfo = process.env.DEV
    ? JSON.parse(fs.readFileSync('dev/data.json', 'utf8'))
    : await getPRInfo(teamName)

  const metaInfo: MetaInfo = {
    teamName,
    cover: false,
    prInfo,
  }

  const files = fs
    .readdirSync(`teams/${teamName}`, { withFileTypes: true })
    .filter(d => d.isFile())
    .map(d => d.name)

  for (const file of files) {
    const read = (file: string): string =>
      fs.readFileSync(`teams/${teamName}/${file}`, 'utf8')
    switch (file) {
      case 'cover.png': {
        metaInfo.cover = true
        continue
      }
      case 'README.md': {
        metaInfo.readme = read(file)
        continue
      }
      case 'title': {
        metaInfo.title = read(file)
        continue
      }
      case 'control': {
        metaInfo.control = read(file)
        continue
      }
    }
  }

  return metaInfo
}

const teamNames = fs
  .readdirSync('teams', { withFileTypes: true })
  .filter(d => d.isDirectory())
  .map(d => d.name)

const metaInfos = await Promise.all(teamNames.map(collectMetaInfo))

function renderGameCard(metaInfo: MetaInfo): string {
  const coverPath = metaInfo.cover
    ? `${querystring.escape(metaInfo.teamName)}/cover.png`
    : 'default-cover.png'

  const teamPath = querystring.escape(metaInfo.teamName)
  const authorName = metaInfo.prInfo.head.user.login
  const repoName = metaInfo.prInfo.head.repo?.name

  if (repoName === undefined) {
    throw new Error(`renderGameCard: repoName is undefined`)
  }

  const footer = metaInfo.title
    ? `<h2>${metaInfo.title}</h2><p>${metaInfo.teamName}</p>`
    : `<p>${metaInfo.teamName}</p>`

  return /*html*/ `
<div class='game-card'>
  <a href='${teamPath}/index.html'>
    <div class='game-card__star'>
      ${githubBtn(authorName, repoName, { large: true })}
    </div>
    <div class='game-card__cover'>
      <img src='${coverPath}'/>
    </div>
    <div class='game-card__footer'>
      ${footer}
    </div>
  </a>
</div>
`.trim()
}

function indexHtml(metaInfos: MetaInfo[]): string {
  const gameCards = metaInfos.map(renderGameCard).join('\n')

  return /*html*/ `
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>MoonBit Code JAM 2024</title>
    <style>
      :root {
        font-family: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
      }
      *, *::before, *::after {
        box-sizing: border-box;
      }

      body, main, h1, h2, p {
        padding: 0;
        margin: 0
      }

      .main-wrapper {
        background-color: #18191a;
        color: rgb(245, 246, 247);
        min-height: 100vh;
      }

      main {
        margin: 0 6rem;
      }

      @media (max-width: 996px) {
        main {
          margin: 0 1rem;
        }
      }

      .intro-section {
        padding: 2rem 0;
        display: flex;
        flex-direction: column;
        gap: 2rem;
        align-items: center;
        color: rgb(245, 246, 247);
      }

      .intro-section a {
        color: rgb(245, 246, 247);
      }

      .intro-section h1 {
        font-size: 3rem;
      }

      .intro-section p {
        font-size: 1.25rem;
      }

      .buttons {
        display: flex;
        gap: 1rem;
      }

      @media (max-width: 996px) {
        .buttons {
          flex-direction: column;
        }
      }

      .game-cards {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
        gap: 1rem;
      }

      .game-card {
        border-radius: 0.5rem;
        background-color: #242526;
        position: relative;
      }

      .game-card a {
        color: rgb(245, 246, 247);
        transition: color 0.2s;
        text-decoration: none;
        display: flex;
        flex-direction: column;
      }

      .game-cards a:hover {
        color: #f44cd5
      }

      .game-card__star {
        position: absolute;
        left: 4px;
        top: 4px;
        display: none
      }

      .game-card a:hover .game-card__star {
        display: block
      }

      .game-card__cover {
        display: flex;
        align-items: center;
        justify-content: center;
        aspect-ratio: 1;
      }

      .game-card__cover img {
        display: block;
        width: 100%;
      }

      .game-card__footer {
        padding: 1rem;
      }

      .game-card__footer h2 {
        font-size: 1.5rem;
        margin-bottom: 0.5rem;
      }

      .button {
        padding: 0.75rem 2rem;
        font-size: 1.25rem;
        border-radius: 0.5rem;
        background-color: rgb(158, 16, 132);
        font-weight: bold;
        text-decoration: none;
      }

      .button:hover {
        background-color: rgb(158, 16, 132, 0.9);
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <div class='main-wrapper'>
      <main>
        <section class='intro-section'>
          <h1>MoonBit Code JAM 2024</h1>
          <p>选手提交作品展示</p>
          <div class='buttons'>
            <a class='button' href='https://tianchi.aliyun.com/competition/entrance/532262'>立即报名</a>
            <a class='button' href='https://github.com/moonbitlang/MoonBit-Code-JAM-2024'>提交作品</a>
          </div>
        </section>
        <div class='game-cards'>
        ${gameCards}
        </div>
      </main>
    </div>
  </body>
</html>
`
}

function gameIndexHtml(metaInfo: MetaInfo): string {
  const title = metaInfo.title ?? metaInfo.teamName
  const control = metaInfo.control ?? ''
  const readme = metaInfo.readme ? md.render(metaInfo.readme) : ''
  const authorName = metaInfo.prInfo.head.user.login
  const repoName = metaInfo.prInfo.head.repo?.name
  const authorUrl = metaInfo.prInfo.head.user.html_url
  const avatarUrl = metaInfo.prInfo.head.user.avatar_url
  const updateTime = metaInfo.prInfo.merged_at

  if (repoName === undefined || updateTime === null) {
    throw new Error(
      JSON.stringify(
        {
          title,
          control,
          readme,
          avatarUrl,
          updateTime,
        },
        null,
        2,
      ),
    )
  }

  const updateDate = new Date(updateTime).toLocaleDateString('zh-CN', {
    year: 'numeric',
    month: 'long',
    day: 'numeric',
  })

  const avatar = /*html*/ `
    <div class="avatar">
      <a href="${authorUrl}" class="avatar__photo" target="_blank">
        <img src="${avatarUrl}"/>
      </a>
      <div class="avatar__intro">
        <div class="avatar__name">
          <a href="${authorUrl}" target="_blank">${authorName}</a>
        </div>
        <p class="avatar__subtitle">${updateDate}</p>
      </div>
    </div>
  `
  return /*html*/ `
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>${title}</title>
    <style>
      :root {
        font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
        Noto Sans, sans-serif, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial,
        sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
      }

      *,
      *::before,
      *::after {
        box-sizing: border-box;
      }

      body, main {
        padding: 0;
        margin: 0
      }

      a {
        color: #f44cd5;
        text-decoration: none;
      }

      a:hover {
        text-decoration: underline;
      }

      .main-wrapper {
        background-color: #18191a;
        color: rgb(245, 246, 247);
        min-height: 100vh;
      }

      main {
        margin: 0 6rem;
        padding: 2rem 0;
      }

      @media (max-width: 996px) {
        main {
          margin: 0 1rem;
        }
      }

      .wasm4-game {
        display: block;
        margin: 0 auto;
        max-width: 400px;
        width: 100%;
        aspect-ratio: 1;
      }

      .control {
        text-align: center;
        font-size: 1rem;
        color: rgb(245, 246, 247)
      }

      .vote {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        font-size: 1.125rem;
      }

      .avatar {
        display: flex;
        gap: 1.5rem
      }

      .avatar__photo img {
        height: 64px;
        border-radius: 50%;
        display: block
      }

      .avatar__intro {
        display: flex;
        flex-direction: column;
        gap: 0.5rem;
        justify-content: center;
      }

      .avatar__name {
        font-size: 1.25rem;
        font-weight: bold;
      }

      .avatar__name a {
        color: #f44cd5;
        text-decoration: none;
      }

      .avatar__name a:hover {
        text-decoration: underline;
      }

      .avatar__subtitle {
        margin: 0;
      }

    </style>
  </head>
  <body>
    <div class='main-wrapper'>
      <main>
        <iframe class="wasm4-game" src="game.html" frameborder="0"></iframe>
        <p class="control">${control}</p>
        <h1>${title}</h1>
        <p class="vote">Star 仓库,为 ta 投票
        ${githubBtn(authorName, repoName, { large: true })}
        </p>
        ${avatar}
        <article>
          ${readme}
        </article>
      </main>
    </div>
  </body>
</html>
`
}

function copyWasm4(dist: string) {
  const wasm4Files = fs.readdirSync('node_modules/wasm4/assets/runtime/slim')
  for (const file of wasm4Files) {
    fs.copyFileSync(
      `node_modules/wasm4/assets/runtime/slim/${file}`,
      `dist/${dist}/${file === 'index.html' ? 'game.html' : file}`,
    )
  }
}

fs.writeFileSync('dist/index.html', indexHtml(metaInfos))
fs.copyFileSync('assets/default-cover.png', 'dist/default-cover.png')
for (const metaInfo of metaInfos) {
  const gameIndex = gameIndexHtml(metaInfo)
  fs.mkdirSync(`dist/${metaInfo.teamName}`)
  copyWasm4(metaInfo.teamName)
  for (const file of fs.readdirSync(`teams/${metaInfo.teamName}`)) {
    fs.copyFileSync(
      `teams/${metaInfo.teamName}/${file}`,
      `dist/${metaInfo.teamName}/${file === 'game.wasm' ? 'cart.wasm' : file}`,
    )
  }
  fs.writeFileSync(`dist/${metaInfo.teamName}/index.html`, gameIndex)
}


================================================
FILE: teams/.gitkeep
================================================


================================================
FILE: teams/CS赏金猎手/README.md
================================================
# 九宫棋(Tic-Tac-Toe)

## 介绍
九宫棋(井字棋),也被称为Tic-Tac-Toe,是一个简单但富有挑战性的经典策略游戏。游戏的目标是在一个3×3的网格上,通过放置棋子来形成一条直线,无论是水平的、垂直的还是对角线,率先完成的玩家即为胜者。

## 玩家回合:

1. 按`空格键`开始
2. 按`上下左右`选择棋格
3. 按`空格键`落子


================================================
FILE: teams/CS赏金猎手/control
================================================
1.按`空格键`开始
2.按`上下左右`选择棋格
3.按`空格键`落子

================================================
FILE: teams/CS赏金猎手/title
================================================
九宫棋(Tic-Tac-Toe)

================================================
FILE: teams/MoonBit官方样例2/README.md
================================================
# MoonBit 官方提交样例


================================================
FILE: teams/MoonBit官方样例2/control
================================================
P1 controls: Arrows

================================================
FILE: teams/MoonBit官方样例2/title
================================================
PingPong

================================================
FILE: teams/MoonBit官方样例3/README.md
================================================
# Tankle

Credit to [@Milky2018](https://github.com/Milky2018)

Checkout source code at https://github.com/Milky2018/tankle-mbt


================================================
FILE: teams/MoonBit官方样例3/control
================================================
方向键移动,空格攻击

================================================
FILE: teams/MoonBit官方样例3/title
================================================
Tankle

================================================
FILE: teams/一个队伍/README.md
================================================
## 操作

`e` `d` `s` `f`移动

## 玩法

收集30个部件通关。移动到部件上自动收集, 提升等级并重置地图。<br>
吃掉♥可以回满血量。<br>
处在房子格不会受到攻击。<br>
战胜怪物会获得经验自动升级, 向怪物移动自动发起攻击。<br>
怪物会缓慢向玩家地点靠近。<br>
怪物之间也会相互吞噬,并获得经验升级。<br>
每隔一段时间地图会自动重置。<br>







================================================
FILE: teams/天地一!屋!大爱盟/README.md
================================================
# 飞机大战
## 游戏玩法

### 自机

有一百的生命值,初始发射普通子弹

### 敌机

1. 中型机

   会发射普通子弹,发射方向为自机方向

2. 小型机

   可以理解为FPV自杀式无人机

### 弹药箱

1. 回复生命箱

   回复$50$点生命

2. 双发弹

   拾取后会发射一段时间的双发弹

3. 高爆弹

   拾取后发射一段时间的高伤害高爆弹

## 游戏有很多其他的“特性”建议自行游玩查看QWQ

## 宣传链接

[Moonbit初体验——大一小白游戏创作 - Daster的文章 - 知乎](https://zhuanlan.zhihu.com/p/6863463180)

[天地一!屋!大爱盟——飞机大战 at moonbit 开发心得 - 轩Demonmaster - 博客园](https://www.cnblogs.com/LQX-OI/p/18540898)

================================================
FILE: teams/天地一!屋!大爱盟/control
================================================
上下左右控制飞机移动,子弹自动垂直向上发射

================================================
FILE: teams/天地一!屋!大爱盟/game.html
================================================
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
  <meta name="generator" content="WASM-4 2.7.0">
  <script id="wasm4-disk-prefix" type="text/plain">WASM-4 Game</script>
  <title>WASM-4 Game</title>
  <style>html,body{height:100%;margin:0}@font-face{font-family:wasm4-font;src:url(data:font/woff2;base64,d09GMgABAAAAAAegAA0AAAAAKHwAAAdOAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYGYAA0CAQRCArGHLlRC4FCAAE2AiQDgUIEIAWDJgcgG4ggUVRQhkQRbBylAWCR/eGAmzBgcbVSEQV1MFRs8Ts/TVirjdcmzZum+foZqYGq4TdA2FbzSDx8f5+ee7Ns74fim/BWoE4AP1Wwc6lakA20VO54RMrR2gpfsF97s/P3xKMD8UIkBZNFk2ondPz/n9v9G4ROvGcJ9ejaJw8RK4kYUOt8zO4KgUDgofBQGDwMCjsf2FAHKMuSxfQKGICKTqpw8TAYfHywFNs02zbbJDAgUAD+z7l4byADjcSJjXhAkX+V15z5PA0HfmEHdHqW5OfXT1PsVLlV5AkPgm14EPW/1ds0nWuhRkHhmb/7JBfdZazTpbTGMrxynHPs9XO634fF7LHGGYvKrld7xSsgpTyfJqABJJGiNEP0JXXyPy/gUd+Oq0QckHKAEocXne/KDv7oOwSG0MMrDDRgQ0HCAFZ0Ar7LFhgi+t39/2Lzv/+fFLDLD/G/EugBH+CBbj+wXA/giv6ofkm3ZAqiNhrXlgkd4AIQwJg18/ES0QEKIZXedNDpbH9FmDzLD3D97q2rzT3TRXdngPKMRazVYXWiUtlpVnZTprWt4J6wbQiLK7o/u+vhZr91OWHc2/gH+Qyq505NGWB7ui1DWkl94VWLPsznaf1Socl++32X0B1fLASbyLYi6TAO6LlJoPwXg5YAIDQZ2GxXd7yaLzKdTNrAjkIbD1Sca4fUrWmNr+IUViUJVbuuu66KDZXmnH4fMCQ5ukPCRJDdgit52b4Et5RuCK2ZjuBXWu6K6zJkW4qAxA6Y0BWJpS9UgZPLQ3iSuQWAodKrD1VK44bhgApzKGely9pyBS45qWsGAx7ELrGRNkqZX2rpG1no3KgrF9zv29HXdcAmEYpTeqXQunmcM1KNLri1l3ETKhr/jkuZpYQWCtMUkAOA+G31Ezc8TlQCcX0AFiJM8A/Ja5ANNF3s+Aj1HaR91PPZwCslbEBH81Bta7KBGjhAdpteqxIHxKrVrglxhbYG0qRrxPwYd+RA3LtpvfDZhqQKKExdOI4SSCr8hboPCCdUxuYcsLQ2TWw8XO+W8S8kg28tTsGhGLgAGRwq7qpSd5XiJn8+0m7km8BBpAhQ5rqdtpQ58nsk6UVIA1DbFmX+klm8NFI+mk+Ll5BXDAY1ZsGRNeDGIUiLnIISx8u1n++kPlx5KbJLJOSiIDP1dfY4drhKlPE7oTwc9gEI5vBFDpQ2ih/QCB4V+GrFeAMbdFltBSpSqZm9jTuVVM1CVTyG+Haj1uZhNOXIU0xda+WccPIV0vAyy13AXHS7odKqX6lPnNQW29uptFF7hjud+bei1obGQ3mmpvE7YI+21Nlt7iq+tVb3XTcUFG5q31u2uVI1qvk971yZ+/NvzpZV1dNa7Wrems+vXZ7G0bjYrBMdM44xvrdfytxyouoAmPMIUnc0H1njzFfrgVdARZ2VnWXVw+0qv/fX8iYj698zzrSTOlorbpYF7dsMJFE7yW5kV/NV/wwJ/6VW+S3vk6u7s/frQR4kpi7JSQUksyJhl0BSNPS65eUmD+i8UGEYHhd5zmQA0oU5xN+qs8fdwfJZAQaqNDFTgSowOASAVTi4nNRD5CwJVyFK13cHxDEeWVQDvZU3CfsgXuwhIGxxAGE3sxM1QNCL5oTRpAtVec0/pJXNfeLQLO+973quQzeYBhK7GMFx18+4DtE1AX90lFeaawcfPwKbh9CZncWGRig514Ca6r5aIcMk1u7R7OyRfIjVldpkv/8QTig8xMfDoNqXMmPq6rWqoKMWvmXNIhNcLI1TokIhQLNwOGTfZxXWtBtNJFOwSQNl+3DGVwiBVU4+Oq0FeJi5E8VTE1ABD05R60ZWTc49DS4M1nMCCzmZSm7M8UWDSoiGvZPrWrGYd4bKvbh8oXu1Pnv2vrfKud0bz5t2kT7Ti8FNP4L9IJy/PdAULtKZAlxz2FahwUZvcI6aZm61UI4qEJ3XUpHb3NZcIBs7HYrbHf7GgFYvCv4JTMlVK5o9e10zmwVpEoUbhD8pWxVbCX6xdKM4RGTiZ/2PaYEZMh7uAHi1vTTwNaeeqsmWeoX+fERAY8Dlq8IlZUVTrzi35D7ANkN8liq6UConAkh2mBUCA+jNZ4cnuXvJDuFGvEUlaWfzT5MjGonslkNYRjXtmwJEQgbrm1xCr4/AZMWbVPGZ3SvOH9q/AaXqXNGRhP+VuL2mvmu8/zv9BnB5l14cMu1MBSJ04++6QDnTv1bPp6oZnRul1ORTFVkMUlS1LsSh2h2L41VW44wWXcvRhJYwoLfn7pCnX7rB3Zs4otOwC568tbQs/egw8kfbjvhpM06nOc/rWqbg7EicnAydmY7O4nomxNHJws4WxYXFJFGl55716GhGRqqjKI9kp3x0+aiPQqzthaSFKiR6LmZAzFysLXdGb3rZfIi6TEU7jgcy2geINtNWQpaBCnYWTmxqWDw0wzgfrJvzphPhoIstcvGIzuZO4UN1requPbF1HWhqLtgPf3YiwnTA/xIgKAA=)}
</style>
</head>
<body>
  <script id="wasm4-cart-json" type="application/json">{"WASM4_CART":"0ax}=0rr910K&7Ju&>?c0E[FUE$4GGu&>?c0E[FVE$8}Fu&+-Su<7$eE$4Da0!kX1u&$[dEGi:Q0ak?S0E[FUE$4GFu&$[dE/U4b0!kN#E{-tcEGs}a1+h2KE$4Da0E>c0u<h4fE$8}GE{-lSE{-qa0E[FTD&XR50EK]$u&>!a0E[FVETV+EEQAkaE/U4b1B+&IE/U4b0!kU1EQAqdE$8}GE{-waE18fDu&QjPu<qagE$8@$0E>e91oSjMB{8[#CYS]/17=v[1:1=[v}tSy17=v[1AXN1wDh(owO#U}zdNN5A^mY^0rXeWHxmIY1{Uzu1pkwv0S@-g3iHIm0S&A83KEjJ0UbOv1{t5i1{>Ou2[ENU5d/x:5d/x:3KWmE2[WEI2)*[A2)*$J5cq[t2)*[A0TPqG2)7ef0S&Vm2)*[t0S&A84?x3H0S&A80S&Af3JZ$Q6CH]&77}A17ZQGP5^X<X0V8jU2[WW.83gD+6b82!2[3!o4*0sH2)*Ut2)*[A2)7zm8vlDK2)*Um5Ew:Q0S&-q0VzT.5DSKL8x6h12)7ef0T/[U5FkP!5FkP!5Ew:I2]:<79t5O:2)*[A2)*[T90cfF0S&@C5FkP!5FkP!5FkrQ2)*[A91-+{5FkP!2OvsO2M$qiz#*dE1PXPcSSsh>0ylX[D&VRn000000000bD&VRn000000000bE/R?n3X5gy01jnSk(.px0ylX[E/R?n3X5gy01jnSk(.px0ylX[E/R?n3X5gy01jnSk(.px0ylX[E/R?n3X5gy01jnSk(.px0ylX[E/R?n3X5gy01jnSk(.px0ylX[E/R?n3X5gy01jnSk(.px0ylX[E/R?n3X5gy01jnSk(.px0ylX[2nvjyB97&hBo40@26B(}vru5XHxm..I2)$@0rty=3Kh*@N/Pq=S@YQe.VpeD0sBNm1bu@U0rAjJaoiI+l4x2d1B?J{k)huO0ylX?aos!c%nS91nD.p30yl-L8Z2e]yJKqS0C-?V3QC<S0Cuf>0W4H^0ZM%8C0MWXaPSX!k)Ifka{74iBzri81vmIW0D-r90r^({03zqQaoB?iBzs8yBzri8u<dUMc&<rlE&[!U0CVZ@a]}*@aoiI:aoud10yl^eya68=xDNsw1AXxA0^5f90BM6%01fex-@MhzE&[+u0rtAkAuUDIFc5pBE&[!U1A>{<k(.6Oa3]&8%nJfz0W4Lg@qV/%15x<W17#x)0W4N/0ZM%8C0MWXaP&?*k)IfkaQ5$?c&<O%0W4H(0r:OH1va7jaoBC42N.:R1va7haoTO61pDsMaoiI/k)hoL18pa6Bzr05c&)ZB1va7jaoBC4u)2It1va7fao+4jBzr02aor>>1vmFV19X-e0x6@Yaos[lkP*4H04m<Fl4f{WCx2Iw01fex3=r2D1B?J{c&<q(1r^<&0yl<6aoT#TACuW0c&<q(1vi6d1va7faoA8SaorO!k)g{B1vmAPy9A:r0rskyk)g{B0vN%Gl40V!a{6d[03IEMaoK[hArFJH0yl<7c&<q(0vN%GaQ5$*aor2RaorO*k)g{B13}rOy9A:r0rrGI0W4Ri0=*g103zte1zYaXhur!213}rOa{75X0.AJAaoB?iB%c]M00LUglhZ=.@@TwBaoB>b%nS93pA7FVxknT)aoAU/k)g$Dk[F8X0W4Oh2wTX<10vN^13)6iaoDpz0^5f90BN5Naos+dhur}60u.I60sf!J1va7jaosw31pDsLaoK[jBryT1k(#dyaosw3u)2B(04m<Fk(&8gBAfnu03zm:13)0gy9AT204m<Jk(&8fBAfnu1pG>-0rW/]04m(v3)C*u03zqd6kx*LAx%.ya]%$vyA-<61v:skkP*gT0rsnDaoJ+/3M]IGl2Z/^0C->Yk[(([kO1kB0u.Li0=Ys+k)RlI13(%dAY9{#aos+dhur}60ylYz0sf!Gk)g{B18o1Zk(@}B03zm:12ZgM3)kJ)0t2zxTPnC8E)Jp%0ymlhl2Z/!06ZDc0u.wdQL]s<l4BGkAx$dVa{7prE&[!n0C:}2k(:BVk(.n}kMzfm06{Py0rskxk(-!zPBs9^aPRWgaos+AnD.p303zqd0^5fy05:&Xk(-5f13^$gk[DP<kP*4H0yl<gaoDpz0^5fy05:<=aoB?fy9rS!0sGnT0yl:3aPR#L3KX6SaojZ63#e0bTu)FM5c:lSbMFjO0S-BNblgdnkOaedble>*aoj.9%nS93o9vGW3M]G[06}2/1B&YC1T0!h6kx*LAx%.y3NbMZ10N+m1vbfKa]@!^l4x2j1B?J]lh{]:@@CW]E&[.S0ymUE0b37?yc.(o1T0^M1T0^Mk)eqic&]$Haos+tBu{4Bm%5Gi%nJgol4BGkAx$dVa{e}*aoLjPkMB7Inczg213=&L07WkT01feS0W4If5oHbpTu)FM5c:lUaoh@PaPR@[0W4HP1rWZ[0rsqCl40U{0bA+Yk[D/{kP*7I03zwf0=-ls0rskyk)g{B0brXTaoT$kyE4#whur!20W4EO1Qc1HaoK]UAw^*$aos+hy9iK90rtAkACuV$aoi!<06#3Mhur^=aos+hy70-p0E)A0R#X1vo9vG<3NkTu1v9I63M]Bn1zYdYaojXrAx%QF02(5<k(?ci0vN%Gk(>%k1v8}{aorO=c&<rl0DH7003.E^0t2zx6AFk:k)OOky7HT{0yl-A001bx3KM>R04m*Ik)RSw9SVp>aoh@Xk)h0E0u.y=03zqSeDu2>k(>:!0D!+V03zm:0yl:dya/L)3L&Z+03ztp1va7faotjukM}b}1PO]r1]]+C5dn<:03zqd03zmM4)Zki5dP/.aos+hy?+u#2N.KJaos+daoh@-k(>:j4J>-]0ym0cyafb*3MGc?0ylYd01YVb0C-kRaoiI+k)h1saoBC32N.QLaos+daoh@-k(>:j4J>-]0ym0cy9iNp00&%30rN-[06{PQ1v8}{aojXgy.c{$0W4Fe2Y@x50DH6#1oQ[i10vOm1va7haoK[jy?+6[huj1913(%5aP&bN3KX6U3UYRyE&[.S07WkT01f[Ik(:yTkP*4}1va7g5f.o206{ST1va7gaojXdyy?S%3KX6Sk)h0n3l/J]06{)jlgL4%hui<ZkP*dK07WkTaoAU/k)h1saosw22P%jn0CS+W3&{.zaoz{)0r)@}06{:5k)h3F1rW?k1z!RRa{5>&k)RM#{5Pg(00BzCk)RiG1T0%>1vi67k)h0&0bsy(00tFe10vOm1va7haoMv30xHh^aoK[gy9rV/0sGo310vOf1Ae601%s6(1vifbk(>+oao<>b03zsJaoqH)aoh@WaP-+/aorO+k)Rl63ig5G0ZM&B001by3L@^=0ylYd01Z5m0C-kRaoiI+yaPz>3Mx6*0ylYd01Z5m0C-kRaoiI+y9iNs00><<3Mx9EE&[.53QB]iaPSX^aoiI+yaPz<yE4#p3Q>6$E&[.S07WkT01f[Hk)Ror3l/J]06{)jlgB$@hui<ZkP*dK07WkTaoAU/k)RpwaosF52P%jn0CS+W3&{.zaoz{t0rN-[06{PQ1v8}{aojXky.c{$0W4Fe2Y@x50DH6#1oQ[i10vOm1va7haoK[ny?+6[hVKaa13(%5aP&bN3KX6U3ZpU)2y^&@5dy&9BrHYd0t2V90DYE!aoAU/y9rZ51vif9k)h3F1T0$m1z!RRa{Gd[k)RM#]8S>&00BzGk)RiG2oTl]1WJf8k)h0&0bsy(03zH?06{)9aoIDF001bw5f-k4aoDp20ym0aaoRJG001bx5f:yxaoT$kz!*H4ao%1)k)h0&0C=A)2S.}=ao&h@06{(k0brRSyc-aF0+@?Wy9iVS3ig5G01Zs%0UuK-z#*8>aoB?iyc.#taP&??k)h0n3l/P}13)imlgUa$hui>51virdaQ5$(aoK[gyE58tk(+TT002p<aoVBB0bs!9aold00CS.U@0AA7aoh@%k)5khk)hawaQf4)aoK[jy^w8qy9iZw001bA3Mx9EE&[.t001hzk(:T.kP*4H0yl:3huiZ+3Mx9EE&[.t001hAk(:T.kP*4H0W4IUhuiZ+3N=2RE&[.t001hzk(<NXkP*4H0yl:4huiZXaos+emG+$001Zv.3KZbs1B?J]c&:w]0yu.^AuUGJ[bV8-kP*4rbN2p)lgL4C1va7gk)RSS0S$Xg0ZM/U1va7hk(>:B0ZM%9aold800<+Kk(:yTkP*gva}1!W3KWsIaoh@V3.EC22y^&@c&:xo2Zdx)mfC<^3M]Eo1:h0?k{78j07Q=E0ZM/f10vUh0C-!Uyc.#saoldx2X>H=aoT7)03IIi03IKGkP*mN0z9zVao+4iaoM.9k(:yTkP*m%1z/gXya65/a{Qylm*8712m@6!3M]Tt0CS+ZaoK[gy9rW413[501vblMaP&?&k)g%D1rW*}001eC3K^4z3KWmvaoiI+huiZ+3JIpH5f-j%k)Rik2lk>DeDt+U2((7FaosI601fhnaohK]k(?cP01fey03zmAENj5sli4x3N/JJ$E&[.l0.9rxaorO!ncIoV3J$@B00ruF1T0}s1va7gao=H62P%i(1.]g/aoAU)5d/#>aoiI&apeO(ao+4iy9A(>0r<OE5f-j%5f.F&k(.6h1vi67a}B+Ua{Hskp6r*80u.OYaQ/E}ao(N74J>/}4Iff{4iLS[3)k#<5*dxA0C->!3&{IO0UuK#01ZsZ3QB+23/p%=4$tY4aoC1nE&[+m14SOY01e{Vk(Z#&a{x7(nczg20u.LXaQxg)ao=H63lPx)3j):)5Kuy^1v9bk5Fc5)aq2+6aoiI&5d*2%k(:vSkM@nw5f.G803zK&2[NZ(1WJf7a{OIS1T0<Ta%l<%a}1=A00KFFk(>:B4*8}U20&k:1va7gao(N73)kS{25kp>aoAU}5d*30k(:vSkM@nz5fIu66cN/c03zWY5f.-M07E8R1T1A?a}2H[apGw45e38&k(>:B3K^4taoA8#aoh@%3KYl23K+?)0s%V503ztj1B?J{aoLdrk(.n}E)B5p1r[0(1v@UXaorO*y9r<910v+ZaQPs[apnU>a}W9vmG+%Waq2ec3M{382{oi<2OmK>5j3p=1v9bk5d*2[aoiI&apeO(ao+4iy9A(>0r<OE5f-j%5f.F&k(.6h1vi67a}B+Ua{Hskp6r*80u.OYaQ/E}ao(N74J>/}4Iff}6f#Q/1v9bk6a=n]aqk[caoiI)5d*2#k(:vSkM@ny5f.G803zW)4g<c{20&o9a}1!W1T0<Ta%l<%a}1=A01fg(0rAZXaoiI=mG!h-0u.Fn1WJa@1B&Yq0%x!KaoUjrkP*7I1.]g^aoJ.&y9r{b0W4*Y5f.YL07E8R1T1x*apxq7aQGm>ap5I&a}N3umG+%Wap]8d3M]A(2P%A+5*duz0CS!-3&{IO0UuK#01ZsZ3QB:@aoT$hyA:n>1r[4o08rUZaorO?y9s0d10v!.aR2Q@apX}]a})lxmG+%Waqkqe3M{9a4iLS[3>J%]5<VH!1v9bk5!Dk{aoiI)apO>{ao>ajyA:b{0r<OE5f-j%5f.F&k(.o2?Vi-*E&[.l0.9rxaorO!ncIoV3J$@B00ruF1T0}s1va7gao=H62P%i(1.]g/aoAU)5d*2$k(:vSkM@nx5fIu65G}D603zKU5f.VK07E8R1T1u/a}2H[ap67@5e38?k(>ZA2mHRpaoA8#aoh@%3KYl21T0}l0C->&0%x!Lk(:T.kP*7I25kp&aoJ.<y9s6f0W4%:5f.=N07E8R1T1D&apxq9aQ]K]apF!)a}^fwmG+%Waqbkf3M]A(3)k#<5*dxA0C->!3&{IO0UuK#01ZsZ3QB+23L0dV03zp+0W4N/1q09(4GEQKaorO^aoJ.?5gXa#03zm:0u.B^10vZTfael&aoiI+aoAU/aoSld3L0dV03zp+0W4N/1q0c)3ihgGaorO^5fzow0rN-[01Z4(10vRg08rVDaoB?ep6u4?0u.CUa{o1<oA^YZ3K5/@3J$@403zp+0Uvi)aoh@%01ffd0s12@04m*Ma{o4&aoi!&3)tY}04m*Ea{ymkn^4y40t3v@1WJf8aQf4?ao<.700KFGk(<BTkP*4r2[4a-10EZ*0ylYd0Uvl$2ML$Ek(.Di3PXp<E&[.S0z0uyk(?ci01f$K5i7*mk[1qia{gbY1u3k.aoK[ghujph10vU600<XHk(-!y3)kSW1opZ/3KlUO01ZsO3KlUO01ZsO3KlUO01ZsO3KlUO01ZsO3KlUO01ZsO3KlUO01ZsO3K^4pE&[.n0yu.^Asi3M0E(i(a]@8C0rA%=aoAa>03RIhFpE+]1B?J@lh{$9a}1%#03IW(03zp+3j[6[aos+ey9r*813)ioa{!*%03IQ<03zH?2Om<(aoh@%k(}ij13}D/.#JviE&[?VFpE=ra{pgsB%m+?FuPb@aQ5$>lh}gfa@rK}Xc3:{1%s7n@@E9-77!pZaR=a1aorP15e=xe0yl:3aRC[3k)RST6Ce7XaRL%#aqb!g5e=xe0yl^4aRbX1lh{$9a}Uy503I)@03z^{5d/Y$aos+gy9s0d20&Jra}tg203I^]03zW)4g<x}aoh@%k)dul01ZtuPFEd{01fex5c9*MaorO^aoJ.?5fsaq3UotwE&[.58x/nb0Uum[1%s4m08rVDaos+dp6u4?13(]Z1B?J{aoVB62P%pA1B?J@aoVB62oTjA1WJa@1WJa@1WJa@1WJa@1B?J]aorO^aoJ.?5x1LLaoA8#aoh@%01fgd0rA<-aoi!&2Qf%b4IfK56cWG44m6$/1vblNaP-2NkP*aL3M]Ev1va7ha}c:sy-@&*0sGnT0WdW?04m*Ma}=775e(-8aQ5$>ao+mrE&[!p3j]fu10vN(00<+WaQxg<c&:V02{oG+arQ:$arQ+L03zLk03zNV-q*/010E)(04m*Ma}CkeaoiI?huj1901Ztu00KFB5f:yu3KY]m2.9@%c&:V12TFPdaQoa&5fJ7}ao@E$02=%Wc&:I%2{xD{04m*QaQf4)5fJ80ao&}?5w[F>0W4E>01p4OaoDp310vN^12Zb/aoh@%k(.oM0rW/]04m*MaPSX=c&:k>0ZM&V1va7g5fJ7%k(>:A10vN^12ZbV1T0>j0y^hSaoh@V3KX6T3POj&E&[.t00<.Gaoi!&03RFg0ziFWaor2@aoB?fyAS^503zw4000fB0ZM&R1va7f5d5ZLaoq<g0rW/]04m*MaPSX=c&:k>0ZM&V1va7g5fJ7%k(>:A10vN^12ZbV1T0>j0y^hSaoh@V3KX6T3POj&E&[.t00<.Gaoi!&03RFg0ziFWaor2@aoB?fyAS^503zw4000fB0ZM&R1va7f5d5ZLaoq<g0rW/]04m*MaPSX=c&:k>0ZM&V1va7g5fJ7%k(>:A10vN^12ZbV1T0>j0y^hSaoh@V3KX6T3QK<$E&[+T3t*%*k(:yTkP*4rarQUb0UAPR8vEU*k)?JO13(]T1B&YqaoMx.aoI#}20<}Ta{xa)aoiI!5xs+UfAzl85iq0p5ig)maojXcnczg20t3v@0ynpG-@E1=aor2@aorO+5x$g[aor3j3P!B>EGL63EJOUT3v<r4li6)^kP*4rarQUb0UAVT8vEU*ljeq*2o<wIa{ym^y9A^710vN^0$-GM3Mo3EE?jT+0Uvvo0t3v@0u.vN=J1>a0t4f$1ooLA3Sv6gE&[+T01Y>*0W4E>00<+Na{ew!aP@[&5fJ7#aot1oE&[<$aoq&[1T0<TarQ.K03zwf03zBRfD85lc&:I%1}R$303zt300<XE5f:yu3Sv6gE&[+T01Y>*0W4E>00<+Na{ew!aP@[&5fJ7#aot1oE&[<$aoq&[1T0<TarQ.K03zwf03zBRg8.nnc&:I%1}R$303zt300<XE5f:yu3Sv6gE&[+T01Y>*0W4E>00<+Na{ew!aP@[&5fJ7#aot1oE&[<$aoq&[1T0<TarQ.K03zwf03zBRgA4woc&:I%1}R$303zt300<XE5f:yu3Sv6gE&[+T01Y>*0W4E>00<+Na{ew!aP@[&5fJ7#aot1oE&[<$aoq&[1T0<TarQ.K03zwf03zBRg-vFpc&:I%1}R$303zt300<XE5f:yu3Sv6gE&[+T01Y?/0W4E>00<+Na{ew!aP@[&5fJ7#aot1oE&[<$aoq&[1T0<TarQ.K03zwf03zBRf=zemc&:I%1}R$303zt300<XE5f:yu3NbPME&[.t01p4Lk(:vSE)Btzaos+fyZRx/aoiI=5yHK^a]}:{aoi!&3)CZr07E9vk)NSp0yl^63N2M]03zsO!C]$30rN-[04m*Qa]%$fmG!ib2N8sKk($<gaP-+^aoAb701f$K0!hr)c&:V10ylYP1B&Yy1T0?i0=ek/0W4E=0UA/X3NbPME&[.t01p4Lk(:vSE)Btzaos+fyZRx/aoiI=5y{*?G-IhXE&[.t01p1Oaoh@}aoh$]03RTV4<qo52m@743lYP@1T11s1va7f5fJ7}5z3[23M]A$01p1Laoi!&2QfN01rW+i1z?*300<.NaoSk#ap7mkmG+%Wap5J53M]M{0ZM%9y9iKn00<XI5f-j#k(>Zz10vN^12Zb/aoh@%k(.pD0rAHRaoi!&3)t=%01Zm}01^lLa{OU&aQPs%5f-k7aQf4)ao>prkP*4rarQT}*5J30aoi!&3)tV{04m*Ma{/B@aoB?iy?+u#2Q6D@1p#W#2TFCW1v9bk2Onf/aoS!*k)h1saosw22P%lYa%l}M0CS+WaoiI^hujdd01Ztu01jFY0ssk#04m*QaQ5$*5fJ7}5xT$%2m}y?3lPM+a%mjo1%s6(21w.Xaoh@}aoh#a02=j/04m*QaP-+^c&:I%2{GG{0ZM%9ya65/aQxg[5fJ83k(:vSkM@no5f.G81rW+i1z?/}0x6]-aoSl1aoB?fy9rW403zw401o$I5f:yu3XXPZ34B5$c&:V01T0^RarQT}+k-Z>5dY]>ao@D4apom@ao->(mG+$001Zm}01^=.8vEU/c&:V00W4E>00<+Pa{o1&k)h1sc&:I@2P%lYarQ}Q07E8R1T16Za}2H@aoB?iy?+6[huj191p#+10ZM<4aP&?!aoKI43)kJYb0=hpv/V<+aoi!&3)t=%01Zm}01^uOa{OU&aQGm@5f-k6aQf4)ao>prkP*4rarQT}*w&c1aoi!&3)tV{04m*Ma{Yv}aoB?iy?+6[huj190ZM<4aP&?!aoKI43)kJYb0=hp1PPUBTQtBo0E(i(a{1+MToeFNE&[!7.t>+Zl4w#c1B?J@lh{}8a{HskAV$U#.2LRYaoiI+aoSk[8xY1>b0=kkaoK]W5j)1OaoK[lB%mzZa8@FllbiIwa}b4003IZ)03zp+3Ljf]aos+ey9r*813]d>a{{R^0DGv<5wXt&2P%9&2oTo-85:Q$5f:yw1T0[kFpE+]1B?J@k[4]X8:L0Oa@S=90DGw45wXt&7:5/30u-i<85:Q#k(>Zz6cExy26Igbk%Guk7d0DKAV#kf.2LR)aoiI$aqtw88xY5D0+@>?aoK[]AuV2YFb%Wm5Fh+UaRk:@ap/Oa5e=xe01Ztu0%G!Hl4BH707^ryaoK[xB%nI72xp}slgs[}a$Bkv03J*m03zp+dI9Eoaos+ey9s(C13)usa$k/xAuV!%Fb%WmcLj8]aTOriasecS5e=xe0yl^4aS})fk)zGRbTBUma%Py70DGwd5wXt&aS{+carR*s85:Q#k)7<B93ttHkxd>?l4w#Ra%4ri03Jv903Am79s%8baoh@%k)dul01ZtuPFEd{01fex3KZRG27E-}c&:V00W4H^0.--DaoqMEa{e}?nczg204m*Ma{Pp}aoJe^aQf4)5fJ81k(:vSkM@nm5f.G81T0[k01Y+=1Rq>213(%5a{nqP3KX6Saosw23)kJYb0=hjaoh@%01ffF0s12@04m*QaP-+!aoCjtE&[:]1r){<0.rCVaoi!&2QfG$1T0)U5fRl21Rq!020&kU1v9bk1}R%^ao->&k(.Deao-r2aoK[gy9A=?0sGnT03zq201o$I5f:yu1T0^Ra]?#UxAnr!aoi!&3)tV{0u.Cq1B?J{0%x!IaoC7pkP*4P00<+Na{x7>5d/#?ao-r0ao>aimG+%Wao&x33M]P}13([#5*dt?a%l$N0CS!Y3&{.zaoiI+hujdd01Ztu00KFB5f.8Z3UPLBE&[.t01p1LaorO^oAY?/0rSDG10vUo1va7fc&:I%2o<r]0$V1!1%s6XarQ>O07E8R1T10Xa}2H%aoK[f5e38?5f-k0k(>ZA1pLqs3M]A(0x6]^aoh@%k(.6h01ZsO3K+w-0tH2a0ylYX1B?J]c&:V010vQ!14SOY01e{Vaoi!&2Qf%b3)kNp1z?*300<.YapF/7aqm3vmG+%Waqkqe3M]&?a%mKx0W4EOarQT}:n^v/aoh@}aoh$]03IN&0yl:3aQxg<c&:V13M]E=a{{QpyAT0b1%r{?2oTo{2[O^eaoi!&3)C<v0C-?YaoiI!5AA*faozY?04m*QaR=a15f-kia}+Ej03I}uH+{j^5fh@alc}z09u+[n0t9JRaRbX9ap/27a}k8B3K+w-0tH2a0ylYX1B?J]c&:V010vQ!14SOY01e{Vaoi!&2Qf%b3)kNp1z?*300<.YapF/7aqm3vmG+%Waqkqe3M]&?a%mKx0W4EOarQT}+k-W&aoh@}aoh$@03IN&0yl:3aQxg<c&:V13M]E=a{{QpyAT0b1%r{?2oTo{2[O{iaoi!&3)C<v0C-?YaoiI!5A:3iaozY?04m*QaR=a15f-kia}+Ej03I}uH+{j^5fh@alc}z09u+[n0t9JRaRbX9ap/27a}k8F3K+w-0tH2a0ylYX1B?J]c&:V010vQ!14SOY01e{Vaoi!&2Qf%b3)kNp1z?*300<.YapF/7aqm3vmG+%Waqkqe3M]&?a%mKx0W4EOarQT}:]AN?aoh@}aoh$}03IN&0yl:3aQxg<c&:V13M]E=a{{QpyAT0b1%r{?2oTo{2[O)haoi!&3)C<v0C-?YaoiI!5AS%haozY?04m*QaR=a15f-kia}+Ej03I}uH+{j^5fh@alc}z09u+[n0t9JRaRbX9ap/27a}k8E3K+w-0tH2a0ylYX1B?J]c&:V010vQ!14SOY01e{Vaoi!&2Qf%b3)kNp1z?*300<.YapF/7aqm3vmG+%Waqkqe3M]&?a%mKx0W4EOarQT}:P9E*aoh@}aoh${03IN&0yl:3aQxg<c&:V13M]E=a{{QpyAT0b1%r{?2oTo{2[O<gaoi!&3)C<v0C-?YaoiI!5AJ)gaozY?04m*QaR=a15f-kia}+Ej03I}uH+{j^5fh@alc}z09u+[n0t9JRaRbX9ap/27a}k8D3KWmvaojXc5AA*0v/VZZaos+dnczgz[h7Xs8vEU/c&:V01rWZ/1v@VBaoA8#aoiI+5AA/{aoi!&3)C(T1r){<0z0tUaoA8%aoh@}aoiI=5zNm7aoK[gy9A/&0r<OE5f-j%5f.F&k(.o2Bo8R@aojXcoAY?/0t3Cv06{O@6^r[!aor2@aos+daor><2Ov7qaQf4?ao&w(aP:}g0%x!Iaoj}nkP*7sarQXc10vQ)00<eq03IH*0W4NR5f.t<a%l}f10v:U5*dox0CS!Y3&{IO0t3B.3M]GU3L@^=07l!!00000003HiD(@AT1T0^M3KlUO03znJ3LABZ03.LQ1B&Yr1T0^&0B(GB2lk>D5qg5(mf9Tyaoh@>a{!/vaP&?/0%x!JaoC7pkP*4H1p#y]2QfG%1%s0VarQ+e1}X/P8xYeG0CS!Z3&{IO01ZsZ3M]J.hW=>>0UG>ZE&[.T%nSc04$=2baojXITCw24aos?e%nS9fGcpvu0ym<fH-({A0W4R{aQf4>aoWcp5G?ozaGQwx5*d=e5{$&caoAU?EJYjA2swE<%nJQZaRk+bap@]z2P%i(1+4Q7ao$gPTCw2fapPC6D)5>u2TGPmH-)fH3M]>9aQGm>aou{m3pbvq3l*cHFcX4k1rXvz05:/]aqk>8hVKaa6cEPu01Zm^3NkYOEGs{:ZYkFUyAS<70u.MEH9lTw03zuAH-()z10v-13-0!c0E>c00!go20E>u6aoj.iF*7W>08-}+k(.A6aoj.CF*7T<08-}+k(?G7aoj+b0d(y6li6)^kTtCZ3M]Bo[DsB/3QK?>1vblP4*$VaaPSX=lH+heaP.:haoA.>li73?kP*aL3pj]Fa{*NoquPlc0s]LX0Wm[p1+m-$aorU>k(>Zz0sO#p3M]G{1Rx2XaP$9fh6r2k9u>N%ZYj-L0rEV)01!&7a{5>/p750w1aAMqaowM#a{pjkEiwXn03zw@a{77hq47bw3&$!TE/+61E?WtmE*7o4E*HM9E**=bE&[.S0J.201rWZ]00<-daoS/E5Cb@D1T%ASaQf4)df6]5jS<[ta%o2(2oT3@01ZqkaoS/D5Cb@D2Q]-VaQGm%df6]5jrK[va%n#>3lPM@349{8ao$<GENj5sli4xphY@CIh*=+Saor[>2Q88G1%t*KaQ]K{df6]5h6rnHhgcM6apPB$r0mUp0r>^&3N4tHgAXJ4a}t.6r0mUp0r>^&3N4nF3)mrMaRbW%lbiFoa#8v:yAUwO4J(o8fC9)SaRl%uaRt?01va7gdf6R%b{iymc4c{Haor[>5fT7S0t3B$iW2:>3M{ZyaTe3kaqdSRENj5sli4xpboOfMbyHZGapxq9r0mUp0r>^&3N3Vo3)lZwaRV42lbiFoa%oeLyAT=x6cE#i9$X8BaRs(21%sa$aR=acapAMue*7(K22>.OlidlR01f@6ata=&D)6mF3)k$aaUj-KapzcKENj5sli4xpeG=O!eQOYTaor[>2Q7Yv6^b2PaS8s5df6]5j0jLna%n@<dJ/GHdT-D*aqD1or0mUp0r>^&3N3@wc)f%!aShyraq[bYENj5sli4xpcM<iFcW^cRaoB<A0bA-8aq(puasmV)03I{ZaoB<A0bA=1k(>:A9uU.j3)lM4]-ccOaq2+pk]ZByb0Fqy3]O7*au&6>huj<xj%g!600<Yhap{Ei5fKdV95^<mau*eK0r^({071@d:]Dl41r)}l6lUM3a]%$gy73pf6:f0!EGs{1EGs{1EGs{3EGs{0EGs{3EHgG8EHgGaEGs{0EGs{0EGL6x06}Jua]%$Fy-@<503ztUaP&?/k($<C1vi2g1ww@FblYE}3)u#v1rY6.1WJa@1B.N0c&:I%g9Oa?1virfyafb*a#6l33N2V@0yl^6a%]ORy9r^E03zFt1B?T1c&:V0bP)plbUe8801e{UblYE}2Qg@Db{iyT2Yal800<=41PO]N2oTam07E8Rk[<>qa#zPo2SqU=at=v:hujNpg-#@X00<Y7ao%?95fJ!u3QB+n155&Ebl]Q%3)u/q10w^U1WJa@1B.N2c&:I%e*qI.13)ieyafb*a$S@#3Nb<02n3Ica{/W#2Q6J$2}k&=aUj-x5f-kFaQYy#ao-tG03R?200<.SapGX05fSLD3>KQ9d<tDC3vB0capxt7ap/O8r0kDe5f-n:0EM443M]AX}t.VXaoAbJ03JEca0qXwaRt?aap/Ob5Cl2D79APy5n-N7k(-2voAY?&1$fDWaSRWsarr#Rk(.n}E<kdC00<+#a%4<uk)h1sc&:I%dfPXVaSqE6k[E@U96<QEaSzKxarbFF89[vAa@y)I03Jd379BAvaRC[eaR=agaqD1h5Cl2D6HrAA3l?n(FcX4k1rYG^05:/]atUbMhVKaagAWw<01Zne3-j4y1B*D30E>f10E>f10E>l30E>c00E>l32y==60!gl13X5nc0E>c00E>c01aIA[k]KFZd)ThKa$t>%z6x0D8F*P0aolg210vRg0=f1.k(-2goAY?&11jcTaT!DoasG+:k(.n}EJ[}y00<=aa$jSqk)Rpwdf6R$gZ9<\u0021aQ5$?k($<DcQv=FaQgjjao>HxE<k4z01p1%ao&@mncIoV3J$]611jcPa#pz&ao>aqy?+y02Qh2c01f}PaoK[fmG+$x6C7P}h:I%1hui>5h:EB402M?qao:X72P#5G2r8R]au6/sk(-2foAY?&2pGMXaTn9iar%zXk(.n}EJ]7C00<=6a%Xokk)Rpwdf6R$fA?B:a{Yp@5Cb@D2}k&WaQPs#df6]5fcyMja%nJZ3M]Y$1Ryqaa}b[22Q6T13[he/aUB(C5f-kHa}t.5D)61y3N3674<huY1va7va%GtOD)64eaoAbJ03JEc01!#baT4%Jar+Iz5G?J94<hC}]-cfTlihDS79APy5n-N7k(-2voAY?&1sKlUaSRWsarr#Rk(.n}E<k7A00<=2a%4<uk)h1sc&:I%ecM1YaSqE6k[E@U96<QEaSzKxarbFF89[vAa@y)I03Jd379BAvaRC[eaR=agaqD1h5Cl2D6HrAA3l?w]FcX4k1rYP*05:/]at$tPhVKaahxSX)01Znh3*[2}aoj-UFq0{0?R/5I1vbl+4*%GWlv:PPRS$wB0A]Q>k[BLmaoj-UFA.Y>?wfn$kTt[>3M]BoFwxt0GRFPL1vbl.4*%GWlv+.[RhVH01vblZ4*%GWlv^Cq.$j1l1vblY4*%GWlv^dXPE0+AkTt+*3M]BoFrYxP16L*)k)!bgaoj-U.Q*CA1vblV4*%GWlv=h$1x>{[k)N#eaoj:zGGSGwkTtR=3M]BoPP6dV1vblS4*%GWlxGE)s{d8R1Rg$-07b(Os{d8R1p>>.07b-Ds{d8R0$L+Z0742@1vblO4*$V73LSQzE&[.S}}S/ta{f1<k[[F^0sGOx1aIA[lbz:/y:5%90ZNDxa]@8G3O}*k0E+600E+601ay&i1ayo20E+600E+600!7i21ayo21ayu40E+911ayu41BZM81ayu40!7r50!7l327uP50!7o41BZG61BZx32yVY60E+c20!7Jb0!7Jb1ayu40!7f1k(-5fli5ehaos+dmG+$x+Y+iiaoiL!1T0*&N/L?P2wUJL0ynLTbaeD$0=5}Xlv:PpFpJf22P%b2aP&8{10T9klihY.MJozMq6u5+10J%hliFA%0E=f}aoj.dquRFn0r<ODk(<W/aQgmkaQpslaQyymaQHBmaQQHnaQZNoaQ/E{bjtH$08rUZaoA:x0tbnha+G!r0Wrv1k)6.6G-I-la+P>sG8)9F0C->*aQPt35C=wIF=Ogo03D<]y9Fifk(>:A4J>/@Fb}}oaB<Gdbl4S=4qE9^03z+^aRbX85C#IK5fI60@qW@Kap/O05CVqI5H^X=aQob4df6]52P%Zd02M(H0u.%=a%rxRaQGn2k]05@kP*lda]89X1WSxybk.Csa]qm91T9Wxy:5SPaO=0W}t+pP5<VH!1va7kapO[R03I:OaoR*jao+7jEiFaXao&xbbj+^T[=f*503H?jEiOdXapO[R03IZNap6d.03zCi0^(i!03zZZ{w=Ai01ZR7{5Doe03H[laOt..aQwC-3K4TOa^A6]03EKcyA!#z5DhUMJ@Zv8a^h{)03EEayA!]xk(<O4KPu1xa=(ZEJ@Zw+0C-?(aoAZD0u-3#JSA(r3lPx[Jr8rBaDlzqb8=KB6kF^a5C=wJIVDcx0bA.)aqk>jyATDo6CgcwaR#m6b8Myz7A:Fo1}ZOga@z:e2Q6A}7+2B@aQxhcdf7hdODf&I5f-l/0u?:(6f#T)1vblNaQ/E@1va7l5gF/V0yl-QaQXC@2Qk9alihGT2NZ!U6g1&N1va7kaqksY03I:U3KYl2aSiMCaSrVEaSzKi1B&Yr1T1iY1v92N13^$mbg((Z3v<otapfmz0743yaSRWBarsL!kNWY4apfmy0h?0?03AqWa>lMU3lW>0y:4pdaKZrk!bTnc9V$Xi^F#PvFfu0S2o}K}RY<s=arNH8=&uusaKya8a<Qch=hY0k0bA-2apws4arA/GmG(6T3N2)23<q558y0Aak(:vTk(.oo3)lVo8xZaB2oU0f2P$ch2{p9f+M6{fy9sD601feS3J@Y@kM:m]2{NK)ljek^aS}7n:]Fs.-@Ek9RY<dZk)!:R0bJ?103GqZaJKK#a%GqMm*86=0T*aRbe%QH3v<oAao%af0743yaTwfnbe:FVa&ad3b=q*606{@m.VjG@.t>Z{03GbUyAT#D3<q558x#@%k(:vTk(.oo3)l&t8xZpG2oUlm2P$ol2{p9fks2r+aSgW*3KWs+3<q558x}vh1X5SAao%8Nliq-.jvf3B1WJa@1WJa@1vblQaSp.h2o+]D2o=bJ2{zwMiV{HY1B?J%mfF9a0r<ONa#@711WJa@1B&Yr1T1Zci6^Zy3NdIvdK3+]h6sZ#hgcL^1WJbiclJNr)F]Pm0dVjuapfmV07b-DFfur-cM<*r1va7mbj2p@<n:YNdiF<t(J0?a>L#.ORY>s9lf51*(hUSz>(q<&03HIayA+k]gen#tasODsaswrrasFxtaq(x^06{W3aSgT?kM:m]2Qnyhljek^d<bcx<P4QOFfuD^d<cxB1v9v%3M]V#<n.HNFfuG!2o@gdRY<%#at6Gm&S8mKaMrxqa(Jzz?#B[U0bA=hk)p1bclK(-2oUJu2P$Vw2{p9f?Vb}yy9sD601feS2o?+2ao%7C03zN>?t!XO03Ha#q3qwm0r<O)3Njva5gO)U03Q4@aLu-q*5MHz8W^+}aU>eTaU$k@atW:QfczhSf*MuZ3l(5xl4xd$00BBo0ylYz02cME0u:9Q00<Zs0u:3N01ZoA0u%i9[^lfmE/U03E/U0+E/U07E/+64E/U03E/+6jE/U03E/+66E/U03E/+6hE/U02E)B}-i3wt?03IB!0r+Ug10KfnaoAWQ0ynpG85:R1bawQ00CS+W3M]A#00<+KbanJz@qW#Aaoi!&5fWOBaoh@%aE@JSNe[Aly9G2Ck(>:B1%Pxml3=oeE&[}tMh%n^ncIoV3Ng&pmiR%tE)B5p1r!3[1WJf8a<y0f2Q4v(nczg21r#y%ljeq/2{ou{!C}]yFft4r10Vj{ao=H7^/pG@yA.17apj}?^F#M!aKQm8bgcxR@@E9.=&tf&aKp3g=&sQ{8xYqK0CS?701n(o3M]J{-@Ej+bfQ4+bfG%L3u49g06@pY:]Df2:PaTb0Dxp703zs=-@Em601Z1^ao+4in^4y410UX:k(>Zz.#H[YaJamCe!w)s1T0)>-Sep9yAS=/aoJ!703zCh0CS^}03GbUaJ1g]a{f1803zs=.2M^.01Z1^aoJ?606{T2aP&?>b050&nczg210G/I0W6S(eF5^raoJ/Ik(>Zz10v^>j3-&?j8k#z1T0)<koH1Iks3!h85:R1b0Fo[y9rV!ao<2alf52v1va7la$b+r0bS>^ao<2qk)?DMcp4#SaQYy%a%/IZzY]Ji10P0R0brV2k}<z*y9B(*@@E9.a%l}faS}%u85:R1a%oeLy9sP-fDZ:ra%fbJ0Dxn7aoAVaarz7i8xYba96<TvaSiN1apJ0e8:TG8AuMky0W5v68w0=8aoJ/8k)7<B0%G!Ka$k!+p6r*81%L(&3t*{}ao<2Ck)?JN4J>&$gc>[PaUMbnapS6ff*U*uAuN1U0W6csfC29uaoJ/uk(>Zzd)U<i4R^gtlh{$9aUj-qas!M=5e=xe10PiX0+@>X1T0)<hxShEiybtwiCG-$lh{$9aVyIBat$u35e=xe10PP*0CS+W3KX6VaR(g4k(-2y5C2(9ao<4x06{PQ1va7ia)PaJ0Wc!ek}&&/8xYba(hT9Jy9A:6>(q?caN5>(e!w)saoJ?K06{T2aP>2W0%x+Tao<1I03z^{<n.^PkP*dL>kVRaaM&.<fC29uaoJ?I06{T2aP&?$k(>:B<P2X&3KX6VaRl{t0%x!Wao+pskP*QX1.]mw03z>?bh@O*0C->l03zy*&q=gKF*faMRY<{$k}<Cs0br.m073R=AuTcraoAXv03H7$5e=xe1r#O2ljek^1rW^<*5Kzty9rW45KuCjbg#@80sGnsao<4S06{T2bj2pL1X]g=k(Z#&a}=14nczg210WZAao=H7@qW@MyA&VRk(>:A{5DirbkRvb3w6F#0h?1o06@pY}2CdN{Y9RW0DxpS03zs={5Dlf01Z1^aoS[Y0743yaP@]2k(>ZA]z/p23KX6Vbj+^S1.]g.ao.&IaRL$5bjtH$0CS!C03z{$)F]=XkP*dL[=f^laO2H#fC29uaoJ?T06{T2aP&&2k(>ZA[bJ<$3KWaX10S%gk(>Zz6HqZ31r[N61Xn+Yao-(5yA!=tk(>:AI#+49a=MHBI#+5X0y^hSaqu2-0u.LXb9z%H6(b1Q0yl:4a=(ZE0W9N9k}SY^8xY.rJ@.JEyATx1aqu2T0u.LXb8Myz6(b1I0yl:4a+G!r1r@T5ljeq*Hxjp@H5<N]aCG]ib834-@@E9.GAig%aCfXqGAhS48xYebF=OgBFft4r6*R>nb7P+60sGnT10NWAao+4iy9w9daPzA:Fb%yd0$bFV10Mm@aoB?eaLcP8]8GdaNe)M]EGs{1EGs{0EGs{0EGL6^FpJf2FpJdQaom6r0W4If@%9r-3QDQ+a{gahn^4yB01PCW13]QK1vblM4*$V6aoMy53pj+o3AO$a2%[VvaP@[?aoWrv1WSh!1vblM4*$V6aoMy52P%f>2=@?92se[j3l/)AFcE[i1rXas05:/>apGv$hVKaa3{:>K01ZmYa{FAd0rEV)0T7+OZ+#YhaohK]l7*atl9JlPaP&?/1va7il4y<89s&J213#cd5fhdi0$CuX0E>c027DY61+cP50E>c01aHJ70E>f10!hr)l&Wh!000000au0}ld!7a3M]C.a]%$]TCw5vlihY.96%T6aP:#XFpJf2FpE[(0EVagaorP7Gcpst0ynMzH-)T5FdL3FEixHK86x&Ia@Ej41vr4#mG!ib0r<OGk(:vSE&[?W08S[=01feqkP*g}07OgFaoK}gqxV&00W5m37z8i14*$Vm5dfQ9l4xd$00Bz*k(-!y6D!O^05<(-ar<8Khujpha%Eg4a%l$g1q3d=a{HskmG+$020&kU1v9bk1}R%^aoS?%aoJ.}5p:^81Qc1Ma{Pp$aQFin13^$na@8Kb2Qgxn6HAdSaQPs#a}(y92Qgul5KD*E3vTchaq2.eEiG4=08-}+3<3!V2{G{e01Zp{ap]8darzZqk(>Zz4NyTq3l*SVFcE[i1rX<N05:/>ar.<mhVKaaaS}mM01Zm@aQFLS3KX6-aQ5k@1Tju$0Ux[-3POj&E&[.58x]kGav=M1lfHirjq[OI01+H#aPT>m5dfP-l4x1{00BzDk(&>z3)kS{0x6]-aoI#T06}>@US0af3TiYrE/U01E/>cx04m*Ma{]H$c&:I%2[Oj42{GG-Ne[Gjc&:!YkP*4ra%l[n00<.Naor2$ap5FYaor2$3M]A$00<+Na{fj[2QfD:arQ>j0Uy!38vMPN3.dj#5Q>&5lJv8=@%%-90W4FeaGQwx10vRh%nSc04$=2daos+JTCw26aoAU*EJX[r10v.}aRt?3k{im+aRC[faqf5B2oT6<1+4Q9ao$mk%nS9fGcp^G4<hBhaQxg)ao^iq4iL)waGQwx4J(i64TYAcap7mQTCw2dapxq2D)5!v2P%Bj00<XEaou{m3l]*03o4}@k(.pV0rAKRaos!eq3ocb01:[^4*s6RlihGT2{ol>34<Acli6<=kP*4rHxeL9aos!fEiw$v3lP.e4*@:/01Zm}01:[^a{Pj>5qQu9bm2Z#5f.i00Aog!aos/UG^3Zz0FhD@13!7pdf6]61rW+B1va7f5fJ7}5qHog1T0*SHYFz50r<OC5f.F&1T0^Ra}2R3df6RYciji$aos+dmG+$001:[^a{s!O3M]DY&q+26aoiI^5qZAi0&DBF2SR{n0EK]%1:*x227cG41agf11agf11agf11agf10EK@#27cG41agf11agf11agf11agf10EK@#27cG30E>o41:*u20EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$aoh#y00E^q0r<OC5BYVc1BIr(1WJbi0u.v^0Wup$l&Wh!000000aMc%aoA+v0gC5jk(&bf3M]G{/z[r(:JnoMu?uNSbg=?0a{f4t073ZsbgDPV0z@$+aoJ?s073ZlaP&8{10Vg]XGI7#10Vd[li&b!10V4>liyi<kP*7K^eVPU0u.E*=&uxnEiwX2aoA.h03zzj0000:}YUh*Q9m!ZaK6)e=h:KY+k-T/l[[Yx04*PHkb6jA03GC+aJ%?Va&%Zb1vJj&&j$WG>SCN.:]ANa03Gz:P=%T.1!)dAaoJ!{lif{^E)B8saoJ!]lip0(1BJPq000000n{6:2bim<l&Wh!0002*koICHaQYy%ao[L-4i(id01p20k(-2QncBq+3mC(Wbiw>Hdm0@12Yala00<\u0021g00Juga$1GqQ9g:a3mC(.aTGzPasfLYD)n$D00<\u0021f03S:Q0ym0cyaxn&bi5Ub01f}}ar@0OPDUN52bimZbmk?03)u-V0W5QR1BIB3c&:I%&S7eCk(%sTy?+E22Qnjc1PO]Na0qQEad%!#ao[L-86YFp01p1&k)5kGncBq+3mC(Wbh-CB96<V)2Yala00<\u0021a00JugaSqEvar3)%7:63SaRVddc&:V07c@6C7dXNQbmk?02Qna9a@rJFk)Rpwd/Y&0?2EPU3N3lc6D!c-a}(76Q9g3(3mC(.aRv0zaq4cED)n$D00<\u0021703S4w1WJAgyaxn&bhi8301f}Yap/OaPDK^/4iMdPaQ/F3apK[Dao->(Q9h6j2}b=Za&:NG03GqZncBq+2}b=VbjUZT:n!Hak)Rpwd/Y&0[C&Z)3NiN<ao[L-.t>!!c&:V0.#J77aJamJ1BIB2c&:I%[bKVK06{SK2Yala00<\u0021q00Juga&sp5.t>Z@0h7KL03zGuaW44Rc&:V0ks2t[ks+{8bmb:#2QnWpbesgA0ZN9dyaxn&bjbvl01f@lauZ&hPDVGv2bin2bmb:#3)vU$10xS}1BIB2c&:I%(&nj>k)6yUy?+E22QnNm1PO]NiuQp7iImMPao[L-gB0hO01p2dk)eq/ncBq+2}b=Vbi/dLhBdEi2Yala00<\u0021k00JugaV7q$at/-ng9u^}aUB#Cc&:V0fHk<+fH#s]bmb:#2QnEja#8v!k)Rpwd/Y&0>kUU=3N4eCe*8*uaUs//at6rhd<b0re1^m[2oT3ID{^@m00000[v]b{00000008HM3N2=#2oTqD3K:=Rjoo{jD&XW1D&!:2D&!^1D&!^1D&!^1D&!^1D&!=#D&!^4D&!^1D&!^1D&!^1D&!^1D&!=#D&!=#D&XV%E*7i3EGs{4EGB($E/T]$E/T]$E/T]$E/T]$E/T]$E/T]$E/T]$E/T]$E/T]$E/T]$E/T]$E&[.5[C&Ywk(?ci01!S13J$&100LT*aPSX=5BPPy0Z}WZ:.-.s]GP5]/z@c110Vp@lihY.!C}]pq3ocb10Vs%lihDS0$cjNbgDR6aP@[&bguJU2zji5bg3rR162E?aorXm07w4iaoJ?n073*paP&8{1vJj&06{A8>%7)==J26?aKp4Ya<y0f1vK%B001PswiM.h=hY0i03GL!P=}OVaoU7j0n$UVm^8$ea<o{e+k-We0hgLtaoJ?f073Y^1va7gbfx)OaPR@[1T0#yaQf4>a{{Tqq3qwm0r<OFa{*Nqq40IOao->(Q9f{&2}b=ZaTYLQasxX.D)n}C00<\u0021f03S*S06{)byaxn&bi5Ub01f$$ao[L-a%Nyx01p1@k(&8NncBq+2}b=Vbh@ODb%.L$2Yala00<\u0021c00JugaTn9Nas0K6aS{#-aSR^lc&:V0a3/@Ja4MJZbmb:#2Qngba%oeMk)Rpwd/Y&0?V9/W3N3Ml9uVz@a@?ZfQ9gu#2}b=ZaSrSGar0=ND)n}C00<\u0021903SvF13)ieyaxn&bhAk501f}/aq=jsPDUf{2bimObmb:#3)uuK1rXBI1BIB2c&:I%*YeJlk)fEVy?+E22Qn161PO]N6D!5i6RDS.ao[L-4Khod01p1Zk)nwxncBq+2}b=Vbh92v5KuN^2Yala00<\u0021400JugaRbX9ap>a*4iM644wC0Nao->}PANZ-000000n{6:2bioZ07l!!00000[in5p0hgL+ao&})Q9h3i3mC(.a&THF03GnYncBq+3mC(WbjCNR-@Fy9k)Rpwd/Y&0)/iH>3NiK&ao[L-.2LX!c&:V0.Vh$6aJ1gI1BIB3c&:I%)F[DH06{SK2Yala00<\u0021o00Juga&jj4.2LQ{0h7KK03zGuaV{$Rc&:V0k0Yk)k1C*7bmk?02QnQnb0Ou{k)Rpwd/Y&0(I}7*3N4UQjrM!Wb0c[KQ9hDu3mC(.aVR*<auq%}D)n$D00<\u0021l03TD&13)ieyaxn&biY7h01f@fau7A5PDVop2bim@bmk?03)vC[1rYJ(1BIB3c&:I%>L#!:k)fEVy?+E22QnBi1PO]NgAXB}gOt{Dao[L-eH7PJ01p27k)nw:ncBq+3mC(Wbiw>HfHk>d2Yala00<\u0021g00JugaUB(?atfrgefDC=etspqasOA.PBh[FaoqQ)l&Wh!0002*ZxE19000000pShXaQxg}apaXH3*4Nu2yDP51agf11agf11agf10^>601agf11agf11agf11agf10EK@#0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$0EK]$aoiI:Q9fKZ3N+#-aU(s-atME<D)o1E00<^?03Ti+06{)byaxn&be%P^01f#9aowhWeH7SK01p27k(&8YncBq+3N+#Xbe<KafHk.92Yala00<^!00JugaUB(?atfrhefB$/aT!Myc&:V0dNsaUdO6X&bmt[12Qmd^a$C}Xk)Rpwd/Y&0.t<-t3N3@wc)f$ia$1GlQ9g:a3N+#-aTGzRasfLYD)o1E00<^+03S:Q13)ieyaxn&besfZ01f}}ar@0OPDUN50IQ.Ubmt[13)u-V1rX*T1BIB4c&:I%ko.mp1virfyaxn&b0Deg3N3Pm9V#L$aSRWaarvg11s1s601p1&k(-2DncBq+3[88Yb0va&k(:gRy?+E22Qhwm01f}*aorP6PDUl@0IQ.LbmC$23)uAM0u-gH1BIB5c&:I%j0CIc0ym0cyaxn&b02(c3N3od6^ao+a}#d2Q9g6)3[88:aRE6xaqdiFD)o4F00<=ea})lzk)Rpwd/Y&0i0xo&aRt?daq7m<4<g[EaQYI6c&:V04m77s4m*RHbmC$22QhhK4Nyg.2Yala00<=b1PO]N3)k{244[^KaowhW1%TK801p1Rk)eqoncBq+3[88Ya#HLJk)fEVy?+E22Qh8e01f}Pao&}[PDKEY1rW(yaP&?!aoOtZ0W4Go3ZpU)2Z^-{l)4cGqmEXekv<$Baoh$j0r<OCmcp48gFZ*HkX71Bl&Wh!0002*koG%3a{eyo0u?Ij7+FcP}YU=1aoFkX0yNe$6F?8kKVYouaoj!f000000pSjDaQoa&l&Wh!0002*kCfe9ao%1{QAP)NJr7gal(mHzrqN<6koHc5a{ppstOF$vRHZ>53KWto0rNS>01!V21B&Yr1T0^R[bJPvk(?ci07l!!00000003Bn3J$&100KFBl&Wh!000000aVjWaoh$k0r<OCNJ.!AJSys8NHoGh+[0eSE/+62E/+62E/+62E/+62E/U01E/U01E/U01E/U01E/+62E/+62E/+62E/+62E/U01E/U01E/U01E/U01E/+62E/+62E/+62E/+62E/U01E/U01E/U01E/U01E/+62E/+62E/+62E/+62E/U01E/U01E/U01E/U0vE/U0LE&[+T01YX=/8W7Y0ylYK<)Z9A1}Ry&0ylX%5f/Wab9-f{0yt&p.hwHe5*div01YX=!D3>U0yl=M<)Z9A1}Ry&0ylX%5f/Q8b9J3[13#5r.hwHe5*div0t2!^^/yUQ0ylYK)-o%E0$V7/0yl.$5f/K6b9q)(0yud{FTDPK5*div0t2!^^e+CM0yl=M)-o%E0$V7/0yl.$5f/E4b98:<13#v@FTDPK5*div0Ut[!=JbkI0ylYKVF7bT2m}H<0yl+#5f/y2b8(Q?0ys3BH%32m5*div0Ut[!+(G2E0yl=MVF7bT2m}H<0yl+#5f/s0b8VE/13%lDH%32m5*div0$V1/+k&/A0ylYK]Vz:r1}Ry&0yl/05f/l$b8Ds^0yuw2F.pks5*div0$V1/:PiPw0yl=M]Vz:r1}Ry&0yl/05f/f@b8lg+13#O4F.pks5*div1p#a*-@Nup0u.wd01Y.^H5[g}G-JrH0ylYdG-I.$aos+h5d*590u)0{aojXc5d{as0Jd8)0u={]k(&9W0t2>^0yl&15f/6]a]RD:06{O@5H8-aRY(6uaPqvb0WdHy5e38^k)d-gbe:H9}V4-sk(.Ddbk?Ita]zr.}V5[:aP8iJ5*div1Rqj?.Vp}P03znc01Y.^}t-/7TCw7@0h?1n03I1ok(-5501Y+=0yl(25f!%(a[CWR06{O@5Hc]Gk{im+bj$@la[L:S]8I5SaOkTB5*div1Rqj?.2U.F03znc01Y.^[=g@#TCw7<0h?1f03H.gk(@g#01Y+=0yl(25f!)<a)PaJ06{O@5HcSyk{im+bjbxda)YgK(I%iMaNx7t5*div1}Rs&Zx2Iw03znc0t2?!(hW.9>(q<&06{Pc>(qncaos+j5d*510u{L8aojXd5d{bH0h?1503Hw6k(&a<01Y+=0yl]35f!^*a(SFA06{R%5HcooRY>72aMrw!0WcI65e38^k)v(ibd)}1?Va=0k(?Jebh&K1a(Aty?Vb}AaM9kh5*div2m}B<Y8:8f03znc0t2?!?t/?:TCw7R0h?0}03H1@k(-4.01Y+=0yl@45f!W^a>DYp06{R%5Hb{ek{im+bg#%]a>M=q/8O8qaLlV95*div2m}B<XD9(503znc0t2?!!=m#UTCw7J0h?0&03G.<k(@gU01Y+=0yl@45f!Q+a<Qch06{R%5HbT6k{im+bgcy*a<Zii=J3lkaKy915*div2OmK>W/EU@03znc0Ut}/=h::=+(w)g06{Pc+(wp/aos+l5d*4]0u]L+aojXe5d{bf0h?0.03Gw-k(&aJ01Y+=0yl#55f!H.a&TH806{U$5Hbo@RY<7XaJsyE0WbI-5e38^k)O2kbd4v].Vg!Vk(}Pfbe<LWa&Bv6.Vh$8aJal>5*div2[NT(VJhjlaojXe5d{b606}:eH:6UnRY&?Qau@c(aIW%*5*div2[NT(Vh(agaojXe5d{9Ik{im+b0z?EjrMZK0u:Go5*div2[NT(U(M1baojXe5d{9Ek{im+a##LAi3pdC0W6Dl5*div2[NT(UMk[6aojXe5d{9Ak{im+a#Mnwg:1Ou10xAi5*div3j):)Uk]!2aojXf5d{9wRY^=qfHkWYf+s%u0ym575f!mTaUs/pk)4Vga$]&qe*8-i0u:0a5*div3j):)TPoN{aojXf5d{9qRY^MkdNsaUd?Aso0ym575f!gRaTXxjk)4Vga$oAkc)f)610x065*div3Li<[S@Tv*aojXf5d{9kk{im+a%<cgbP[r$03AJ#5*div3Li<[SSsm+aojXf5d{9gk{im+a%A<carR:(0u-G@5*div3Li<[Sr1dYaojXf5d{9ck{im+a%0N893ug^0W5D]5*div3Li<[R#X4TaojXf5d{7-0u-f&arQT}a%r=:a@S-&TCw5rRY=)17EncC7.vr57z4=k0ymb95f^$LaR=a3k(+Ty79BtT03A3*5*div3>J%]R2..MaoB?fy9sol6f#Tw6C7)10ymb95f^[JaRt*#k($^A5*d=L0W59!5*div3>J%]Qx8IGaoB?hy9sch4)Zpu5d/D%0ymea5f^?Ha}u)sk(.Deaos+q5d*4V0u}$s0ylX%5*div4g<6{PAckBk(%sL5e38^k[awpba!(W3QB>X01Y+=0ymhb5f^XDa{{Qok(.Deaos+r5d*4R0u}?o0ylX%5*div4Iff}Ob<\u002Ftk(%sL5e38^k[jCqbawPS2seCT01Y+=0ymkc5f^Lza{Hskk(.Deaos+s5d*4N0u}Xk0ylX%5*div4?Go@M&Oxlk(%sL5e38^k[sIrb9@rwarQW@a%riMa{gakk(.DeaoJf0k(.qG0rB9*aoi!&2Q6i>04m*QaP-+^c&:/410vN(02cN]aoh@%aq(s9aorO^y9r:61rW>?a{HsABrICy20&/zaS8sraq/bx2oT9>2wLy/aoAU>B0p]R40iTcapgsFB%dRz6^aojaQPs}apq<b3M]V%3V^H2k)RMQ6cEYH7<m5paqk>iAV>(m2P%N>aR2R4ap-Dp4)ZCxaRt?ck]B??5*d=e5]]cbk[<>qa@S:$2SqU=ar0JChujNp8xYzC00<X=ap{Bh3)lDh4Mjp#aq#vihujBl8vLvj0Pj0daor2@aoiI+aoAao0ual70%x+Haos+d5d*5t0u@M@4<GWcaSRWcarr#QkP*7[01YX=/A0gT0u.EQ5f/ZbaP@[*k(?JdbgV=sJ@Zv95d*5o0u?Q?0yl+#5f/Q8b8#WD0$V1/^/yP@aos+g5d*5l0v0H7aoJe^bgcAm2oT4k1p#a*=&CtH0u.EQ5f/B3aQxg>k)m/hbf*ikIVB}55d*5g0u?:(0yl]35f/s0b8Myz0$V1/+k&:[aos+k5d*5d0v0v3aoJe^bfo<e3M]Eo2OmK>:n)Gv0u.EQ5f/c}aQ/E]k)X8lbe%TcHxeI15d*580u?){0ym575f/3[b8cav0$V1/.Vp[<aos+o5d*550v0i#aoJe^beBp64<g)s3>J%]ZYtTj0u.EQ5f!<&aRk:%k[awpbea74G8)7%5d*500u&3$0ymhb5f!:/b7Y?r0$V1/Y8:5/aos+s5d*4%0v06}aoJe^bdNZ$6f#Q21r[KC1v@UXaoS>^03zK<@S15Ha].J+5fVM8k[<>qbh@R?FcX4k1r=X8k(-!y7:d/saPho#00<.b0u?vwhujdd&Sgh405:/*aMrzAFb}Ld6D(xobk.ALKPuTvc&:I@1rXBc01p1RaqDp85fRD86^%4@a?dK}6+zMiXb^-:ao-}-03zN>}2zJDa]hfY5H42Kk[<>qbh&L*FcX4k1r=U7k(-!y7:d=raOU{{00<.a0u?grhujdd&q>7$05:/*aMitz}V5IO6D(unbkh6GKPuTwc&:I@1T1Ne01p1SaqMv95fRG97aod%a?4E{77.VjW/ES:ao<1X03zQ(]z*0za[U*T5*u@Gk[<>qbh-F/FcX4k1r=R6k(-!y7:d-qaObN>00<.90u?1mhujdd?#K$[05:/*aM9ny{5D#J6D(rmbjUZBKPuTxc&:I@1%sZg01p1TaqVBa5fRJa7BPm$a*}y]7z4=kWGdJ:ao%7T03zT))/jEva[bEO6cV(Ck[<>qbhSz!FcX4k1r=O5k(-!y7:dYpaNPj/00<.80u*?hhujdd?Vj>?05:/*aM0hx[C>DE6D(olbjbvwKPuTyc&:I@2oT<i01p1Uaq=Hb5fRMb7:]v#a*?s[7.v(lWe?A:aoS>L03zN>(hR}pa)PaJ6cVYxk[<>qbhJt^FcX4k1r=L4k(-!y7:dVoaN5>:00<.70u*Uchujdd?t[++05:/*aL)bw(&n{z6D(lkbiP1rKPuTzc&:I@1rXNg01p1Saq(Nc5fRJa87kF0a*.m)84W#mV&Ir-ao-}H03zQ(<P3zla)5+E5fZipk[<>qbhAn=FcX4k1r=I3k(-!y7:dSnaMJIX00<.60u*F7hujdd?2OUX05:/*aL^5v>kWyu6D(ijbi5UmKPuTAc&:I@1T1Zi01p1Taq#Td5fRMb8yLO1a*Rg(8w18nVJhiXao<1D03zT)?#B(da(Jzz5H3clk[<>qbhrh+FcX4k1r=F2k(-!y7:dPmaM0eS00<.50u*q2hujdd*YnLR05:/*aLV#u&S7>p6D(fibhJqhKPuTBc&:I@1%s<k01p1Uar8Ze5fRD88Z>X2a*Ia>8XshoVh(9Xao%7z03zK<*w&u9a(05u5*u6hk[<>qbhib:FcX4k1r=C1k(-!y7:dMlaLD/N00<.40u*a%hujdd*w@CL05:/*aLM]t?2Gtk6D(chbg#@cKPuTCc&:I@2oU0m01p1Rarh^f5fRG994g!3a*z4<91TqpU(M0Xaqv9xy9Ipg3&{.zaos+d5d*4&0u{1]aoS>t03G?)aoJ+r01Y+=0yl.$5f!pUa>cGm1Thy@aK*xl10Da]5e38^k(}Pebcy}&^F$x]a>3Al^F$x(aKZr45*div0$V1/TPoP(03zH&^eUro03zv^^eTZ<aos+h5d*4!0u]R^aos+h5d*4^0v2?&aoJe^a/UL=+k-7@aGtC=+(w<(a<H6g+(w)i0brX303GC+aoJ+g01Y+=+k-7$aos+i5d*4+0u]C.aos+i5d*4:0v2U^aoJe^a/tt--ScL)aG2k-:n^s?a&%Zb:n^v80brW$03GnYaoJ+b01Y+=-ScL]aos+j5d*4.0u]nVaos+j5d*4Z0v2F.aoJe^a/2bY.2L2?aFY2Y.Vg!^a&Bv6.Vg*$0brW]03G8TaoJ+601Y+=.2L2<aos+k5d*4X0u<MF0yl@45f^?Hbesg30$V1!P-Dn#5fJ9?0u<SH3N4.Sj%i78aW3@gaoJ-H5e39F5f-j$k)O2kba[@WhY@b!2OmK>P8*b$aoJe^a!wYShXm8OO=G#{apGzOaupM9y9tLVhY@hBi1MYBhXmeQ0ym265f^UCaU>evk)X8lbaFVThxS8k5fWIzatKGJaE-xPg:0kJh6sZ#hejo<atL5watTMwatKGLaos+n5d*4O0u<3q0ym575f^Iya#7hx5d*1L0u-%9arW3LaUK@FaUU2(atvKNe*8.*10xic5*e+qa%l[L3Li<[MJnlTaos+o5d*4K0u%6q0$V1!L(S0Q5fJ9X0u&{n4<rCCdJ*lRaT[JZaoJ-n5e39l5f-j$k[1qob9S9KclJ<ycM<-U10w%55*div4g<6{Lk#*Laq2+yas56iasdNiaos+r5d*4G0u&Tf5*nFxa%l$gbm>Fg0ymkc5f^kqaS})vaT4%JaoJ-f5e38/k(>ZA9$eeNaor2$3KYl23=SnV0!go21B*D327D-734z#81B*D35pT.f0E>c00!hr)c&:V1hXmeQ03zq201qfKhZ6On5fJwj)F[yik(Z#&a{gaxnczg204m*Ma#QO>aoK[hy-$eGclKVE5H67Q1rWW)00<=9aTn9ik($<Db%.MDaTwfPas4Hga#pwCaoAU/5d*3vaS})gk{im+a%J{daS})[03AA@5*dk#0$V1/f^dOX1G9y+arA/HarIdcaoAU/5d*3taSzKck{im+a%0N893ug^0W5D]5*dk#0$V1/fcIhQ1/AHZaq)DEaq$!7aoK[gy9BG60sGnT04m*Qa$+5Q5fJ7%5fJ8iaoB?e5rW5jk(Z#&a{HsAnczgz00ruF2seF-1va7hao&w*a$T#Oao@C?a$K(yaoAU&5d*3oaRV47k(>Zz6^ahk6+y{2dK2fg&q+5nk{im-aRt?55A9Qj5*d=e5}?znaoi!&2QgYv4iL<v0=f1<ao$glz6oDk4<hA#aR2R7apYI35ece>k($^B3>9dA3M]Tt0CS!^3&{IO0UuK-3M]Bn05:/]aojXchujph03.}h02cKQ5f:yu3K^1T01Ztu1vi206BO1E0E+911ayo20E+60li5efk(Z#&a{74onczg20u?N*03zsO7:om$&S7edaQf4<k)RoI2oTi[2DSU61T0{<1+X31aoB?fy9A-*0r<OC5f.F&aoq(c0rSKQ1BZSak)O2YaP:}n5i7*nk)O2YaP$7p5i7*pk(Z#&a{Hssnczg20u.NT7:fLn0W4W&6a=31k)OOqy9sij0u-0^7:fFl10v^<5Fb/#k[Cdyy9sch0u.{+7:fzj1rW)>4?GP%k]pZGy9s6f0u.<-7:fth1T10(4g<x}ao>ajy9B5{0r<OD5f.F&k)fHO5f8?#aoAat0u?*[2setj3Li%]0$ZZ#aQPs%k(&8n5ece?5s0nt2{oEs0W4^X6cEC&L(S3lao$gmap5I(aoiI?5r^b5oAtlBk{eF]5f8?[k)fHO5f8?]k]pdua{75X3n}>!aoB?hhujZt0W4F300<XGaosw23)kQq05:/*aoB?ehujBl0ZM/A02M*W3PXp(E?m}EaP>1o5dfP+l4x1{00BzFk(&>z3)kY@12Zb+ao-}&c&:I%1r))UarQ.d01+B%8xY4*!bYZNE/U04E/U05E&[.t01ZpOaoi!&6D)Y70u.Ry1va7f5f:yK5dfP>l4xd$00BzOk(-!y6D^(L05<(-apZWqhujph4I5{&0yl:3aQf4?ao<.75fH%300<.Oaoi!&03R+o0ziFWapeP4appynyAT9e03zXd000fB3paXZ1va7fc&:V13LjH801YCA3M]:010vQ*1WKkIaP@[&aoSk/aQxg)5f-k5aP:}v5dfP<l4xd$00BzNk(-!y6D^&c0YH8+apQQqhujph4gz$o9%l#]EGUc3EH*]gEHpM9EGUc3EH7A7EGUc3EGUc3EGUc3EIvnjEGs{0EGs{0EGC01EGC01EGC01EGUcy04m*:bfx)g4R^fe03zm::Paj07:5/b02M[obm^lDkP*4P00<\u0021l03YF:5dY#H03Iv=04m*QbiP1I.Vg!Vc&:I%>kVWA03zqd1zYj406{Q1a&TH8-q?4201Y.=<]uKw01Zm}<]uNy03GeVk(-4C01Y!^.Vgk(aoi!&3)K^kaWd1Gc&:I%<nZvs03zqd1zYi#06{T2a&ad3ZYkH[01Y.=&@yh=5fJaQ03KMHk0Yh(km!FJj}F[X04m*Qbh@OCiuOqI00<\u0021c03KAD0yl<7b0wi[y9tXZj0lS%5H36jauo#QaM9kyiV{BG0W6Jn6cGpDa%l>l01p7e03Kfw04m*MbhJqyhxS2^1zYhvk)7<BhY$13hXlMA?2FMO5fJaK03Kixg^Ii^h4QAzg.p&N06{Py02M8f[hzHCk[Cd]5BGJw0ZM!*1r)}l5j={?aoi!&2Qn47aUU2vk($<Cf^5d)f+s{v*w&x1aoi!&2Qm$5aUs/sk($<Dff]RNaUB(?ataiqbg#@t1T0<?0$V1//z)6AaoT$MTCw5KRY^MkdNs4Sd?Aso0W4NR5f/ZaaT!DoRY^Gic{W>Rdg^am0W4NR5f/W9aTFlmk{im+a$6oiclKQ20W5*35*dk#0$V1/!C{:qao!U^bP[r$10w<25*dox0CS/53&{.zaoi!&3)Kg3aS})cc&+8caS})sarQZ%arR^H0W5S$K]VE!00ruF20&!>1vblM0%x!Mk)fZYkP*aJ1}Rs&^/pNlao@C?bglDm2P%f>1}Rs&^eUsgao$gky9sSv9uVym5f/E3a{!?t03SyGaGQqv8xYp%&q+2uaq#vwGDQWB04m*Mbf{lj79A/E0=f1%ao$glz6o=t7:6YhaR#mpaqVdc5ece>k($^B6:$9J3M]Tt0CS!)3&{IO0UuK-3M]Bn05:/*aoi!&2QmK]a}>H#bfZ9i5*m&f03z>i02cKQc&+8c3Nlfb4R)i@apxq2mG!h-04m*MbfQ3h5d/u@+k-Z%k)g%E4J#o703z.e02cKQ5f:yu1T0^Rb0=hp3K^1T01Ztu1vi206BM2:0E)xv5dfPZl4x1{00BzBk(-!y3)kM[05:/.aoq&)0rEWo2Oms!0yqkqhui>50ylYz01o$Jaojq12P%cQaoqH)k)O2ea]%#W0Yy2Yaos+dhujdd0u.w200<XF3M]DJE)BtK3l/HpFc4Re1rW.h0x6]^aorO+huj190sG>F0E(i(aPT(VUMD0GoAY?/0yu:{155>:01feO0rEV)03IweFvCX70zASCaos!dZxmdkk(.o2e==ibaoiO>l4DfwyA:0HFcY%m1T0*?1%s6(25ks+l4DDEyA-<DFpE=qa{5c60rN:p3>J:&0ZRtthui>50ZM(C00<XGk(@}A5fI2%05:/=aoA./5yyE=]z[$7E&[.n3mC(.aRbX5c&:k>5j3s?1va7u5fJ8bk(>:A5G?A65JfQ?1T1vx0y^hSapnU^3KX6/a{ew+aP.Z{k(Z#[a{o1&ncBz+10vZT4i+@!PAbgBaoT$hy9B6e0.rFX01e]{aoT$hy9s6f10w6+4i+#/P-CoYao->(5txgG2oT3UarQXc2oT3}00<ep03RXm0y^hSaoT$iy9B8}1o/[I5f-j$5f-k53<v1D3M]DYarQXc1T0*]00<ep03R.n0y^hS1T0)Ua%l)$a%mg20$cjOk(>ZA3K^4taoJf0aor2$k(?u33KYGa41xx4aRc<tap&Mr4NybhaQ/E{aQ]L5apSAp1r[jtE@=+uaoiI>AuLGd0Wd<)0u.X<aQoa)aQxg}ap8%g1%s6(2677O03zmH3ihgGaor31k(.n%03zmMcjp7Vaoh@Nk(.pO0rANTaoh@Ya{*Kry:6cJ0CS!-5i7*lk)O2ea}3X!0Yy2YapyEnhujdd3QB+J00<XPaP-+^5tGmH10vQQavcLI3l/*yFcE[i1rX4q12Zb+appyshujBl3lPvc01ZmWaoBC33)k)21%s0<1%s0@00<er03IH*0t3v@0t8gga{nER0u96Y5f:yu3V#ETE&[.n1sKlYa{]E{aoT7)3)t{11sKlIa}3Wqn^4y40UuE%2[Oj43QB/eaQ/E@apHdd00KFMk(<BTkP*gv2[4a-2{GE100<.LaoK1(2Q6D@0W4:>0tan>aQoa]ao#T81T0)&1Vut^aoJf0k(?uT0r)@}06{PO1B&Yr1T0!h1woa9kTx]W5uk:H01f[Ha{HslyA-{F1z/j:k)eqky9rT30u?K/0W4NRRVvff0sa9u03Itd03Iwe03Izf03ICg03IFh03IIi91SD320)+Fhui>520&kE03Ax*aojq12P%r]0x6]^ao&}&hujph1%s1a02cKWaoTO57:6291Vuu2ao&hT03zmMcKWu-0tx@903S4w1we!Zlc81%SSs1r3M]A)5KvfP5O-H3k(>:B4?L(Aa}t^$k(>%H4m71:aP-+!k(#3I3{:}:aP&?/k[F2W3QCs[aP@[*k{gd>3pb!7aQ5$?lbiFua{*MJ07Faoaos=U0Dxp?l4w#9aQppM5dfP{l4xw400BzTk(-!yarRsu0Yy2:aqk>1hujdd6cEAo01Zm^ao:U66D!5i1#VC#aqk>5hujZt6aj{yk(?u203zm:0t3UB01j?*0t6-DPAduK0C&[>aoiI@pxVek0r<ODk(:vSE)B8saos+hoa8agkTyF(5uk:H01f[Ha}N3yz6oAQPAceCy9Bc0T]PZFa}kX4aos+eyAT3c06{:ba}c:sy-%fe2{oM$3QB?9R2..waoiO>k)h3F2sk0-ao#T81rW^<20@m&AuLGd1rW<VU(Ljv03zm:0u.BP06{O)LMp^)E&[.53)D6B1z/m?k(>ZA2[P6t13)h73l/{BFc4Re1rXdt05:/=apQQphuj194iU&%01+[aaQ5$<5fKmI5dfP&l4xd$00BzMk)f7C2P%Kw1#VC}apGv{hujph3)kWh01o$UaQxg]ap67[c&:I+0STwGaoJe$aoJgN0u}Z<0u.BPVJg%!0$VUx01i]I3X6o0a{op]5f.D80W4Q]01p1SaoT7)03R!p0ziFWaoA8%apeP4apyEoyAT9e1rXah000fB3QB!.1va7j5d5ZLapfj]c&:I@1%s0@00<.NaoAU>aor5l03IN&1%sd=aQ5$<ao:U62P%iXb0=kqh30-ck[<>qa{phZ2SqU=aoT$ghujNp1rWX500<XIaosw23)kV}0Yy2&aoS!?hujBl1pCtjk(.n}06{O)1opZ/3NU@QE)BFO3l/KqFcm+g1rW+i05:/*aoAU=huj190W4I401o$K3K3I@<nYMu0rEWo5d/f)13}Cwhui>513(]B02cKTaojq12P%i(0x6]^aoJ./hujph0$bOsaoiI+aoAU/5ctb$3+MJwaB+Hlc&:I@9uUtg01p1}aoh@%ar@6Lk[FbY9V#EC9=-zbaor><6E1I.7<3]saor><5f-5V5oG6laq(puAV(hv0vN{Ra@APKBrICy79BAlaRV41c&:I@a%l)$a%n6M6^ahk6(>D3aoA}>3)DuJ2Y}j4aoA}>2Q7ul0UuK#aT4Ev5G?ZbaQf4>c&:/52setV1B&Yq1T14o0y^iwk(?cP0T/wV2P%i$01p1S0!gnp0ZD/L0ZE>m4G=Xi0S@/@01n@qk(?w}3QB?50sIf}3&*UU3lPB000<.<aoJf0arR*n0!gnp0ZD/L0ZE>o4G=Xi0S@/@01n@qk(?w}3QB?50sIf}3&*UU3)k*w1AU^$appyoBrIhr4<hB7a}t.7AV>(m1rW<<1%su^Y-wGU0rN-}6ES}!a]%$gy9rN46D^xl00><<3KlUR6ES}!3LryuE&[.t01p1Kaoh@%aoq(w0rA^Zk(:gJ5elr3aQ*TF5dfP[l4xd$00BzRk(&>z6D^#g3]O7>aq3)thujdd5G?6i01Zm+aP:}n5dfP)l4x1{00BzQk(-!y3)l9EE(mojap]W#k)O2ea}D$&0Yy2Yap*:rhujdd4).r@00<XTaP@[*5dx-<aolm43lPx)3n}>)aoA}>3)D0z01Y?/2P%f%00<+T5f-j#ap6>92P%cVQx8IwaoA8%k[<>qa}u[?2SqU=apZWvhuj194NyN.02M**aoBC36D^(d12Zb<apYH%hujdd4J#611T13)1T<uR5DR}Q1%r%PU(T}GE&[.n1T<u+a@}*dao:d[5f-8q10v:}01p1&ao:d[03SEI0ziFWaoA8%aoJe$ar7>marA/HyAT=x1T1)B000fB9ZG/@1va7k5d5ZLar8Hcc&:I%6Hr<p1va7ic&:I%7c}$oaR=a4aqD^m2P%mo05:/.3M]H000<+!aQxg)c&:I@2{oo$00<.=ap5J3aoA}>03SKK0ziFWaq>.karS@JyAT&z0W5TA000fBavc2$1va7h5d5ZLaq(snaoK1(2Q73c0$VU07:fLn5*d&05fR&j5!Dlf7A<ee0u&1ufD?2J5fIN2a}C?aaoT7)2Q6W24iMd5aQ/F3apJol3lPP%2{oM^5*dC>a%m1p00<+Nk(>Zz1%s3>1#VC!aoSl1k(?v<0rB0^aoi!&5fR/i0u-d]a{74Mz6x6a6*S%UaRV42aqwPm1vi2h1WJa<1r^%(04m*UaQoa]ao$BukP*gN5<WTn1va7ia})lyy9rWB03IEMao-[}aoi!&2Qg9e5fI5#5G?Sc5FbG$7A<nh1r!o#4J(p9a}l*sAuU/l26q0@apok0AV>Pe1r[dr0CS+Xao>ajy9A](0r<OC5f.F&ao-b-0rEV)0yrvVy:5{60bq)#0S:x)k(-5gaorR*aoAX&k(Z#&aQf4?c&:V02P%r]2Utd:k(Z#&aQoa&c&:I@3M]V%3RpE^aoi!&6E1Xz6^9P479Bt6arRyw77!y+a@0rzmG!ib0r<OGa})nn0zS=Ek(?ci1r[EA07Wlxk(?ci1TjKA07Wlxk(?ci1TjHzMh%O=3KWs^4[cQ^aoS(gaSIQda%4)FarhHA5xaU[7A-Ya01Zs%aSqE9aSzKx5fJ8lar7)g0u@yE0CS+{aqVdq5v8rP3M]J}4NybgaP&?&a}l*sy9rZ52sex9a}a>X3KX6TaP@[>a{{Qpy9r:620&o8a{!UU1T0^Ra}1=A01nk$0we^!03IE/0u?Q?0Wd+l00ruE2oT0{01ZpYao%1%nD.pA00ruE2P%9}01p1Xap681nD.p304m*:a$K]A5fKmsaoLpuE&]4C01p1?aoJ-8ncIoV3J$@42}b=VaUaVwc&:k>eKozf1va7W5fJ8Ek(>:Ae*7Dye&AXf1T2x.0y^hSapeO=3KX7ca@.Tbk)h1sc&:I%dNs571v9bkdI9Zgar7>oasWKq2[OoX3N3uf1r!T97:6Xc.#R4#k(<BTE)B8sao-@8l7!lN1B&Yr1T0%)6*R*<1B&Yr1T10[6HqZ&1B&Yr1T10[6g4]+n^=1m3NciL1va7ka%[DTao<2oaTwfPas4Jq0u&B904m*Ya$jYy5fKmsaoLpuE&]7D01p1]aoJ-fncIoV3J$@43mC(WaT!Duc&:k>ff]Rh1va7T5fJ8Gk(>:AfDZYBfG5[h1T2D:0y^hSapnU^3KX79a%Fcik)h1sc&:I%cQv-41v9bkcLdydar?vvasvsn3j[xY3N3Pm1r!)ga0qWq.#R56k(>Zz9uVsA9t2HS8vEU<a}W9wy9rZ51TjHz0CS+Yap7mly9Be%0sGnT0u?Q?1%KHx0CS+Zao$gky9B5{0r<OC5f.F&k(.o:0rW*q0ZR]f5w!C>06{SKFi1mU0u?Ff6C7P}0ZRtxhui>50ZNkM02M*Wk)PvG2P%gm2SqU>aoAU=hujph0W4I402cKS3Rpv3E)Bc4US-Sn0u?Ce0yrww5w!C>0ymzh3l/KqFcX4k1rW+i3]O85aoB?mhuj190ZN8I01o$Kaojq15fI2%0x6](aoz{y0rW*q0ZTSq01^0FaPK!el4z0c.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZN8I00<XGk)PvG3)kP]05:/*aoAU^hujBl0T?T41aJPrld<cR5w!C>06{SK^82+].t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZNhL00<XGk[M0P3)kP]05:/*aoAU^hujBl0T?T41aJPrlfMI)5w!C>06{SK/VKma.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZN5H00<XGk)YBH3)kP]05:/*aoAU^hujBl0T?T41aJPrl6fH{5w!C>06{SK{%5<J.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZNnN00<XGk[t<N3)kP]05:/*aoAU^hujBl0T?T41aJPrld1l:5w!C>06{SKU?e{!.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZM]D00<XGk)61B3)kP]05:/*aoAU^hujBl0T?T41aJPrl5sg]5w!C>06{SKU?e{!.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZM]D00<XGk)61B3)kP]05:/*aoAU^hujBl0T?T41aJPrlbqdN5w!C>06{SKU?e{!.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZM]D00<XGk)61B3)kP]05:/*aoAU^hujBl0T?T41aJPrlhoak5w!C>06{SKU?e{!.t$!Xk[<>qa{75X2SqU=aoB?qhujNp0ZM]D00<XGk)61B3)kP]05:/*aoAU^hujBl0T<zRaojXdmG+%/^e::=aojXlmG+%/=&BT+aojXemG+%/=JaK:aojXnmG+%/=h!B-aojXfmG+%/+(Fs.aojXgmG+%/+MejZaojXhmG+%/+k&aYaojXimG+%/:]J1XaojXjmG+%/:n(!VaojXkmG+%/:Ph[W5xB>WI#:j!E/T]$E/T]#E/T]$E/T{1E&[.t00<+O5yHO50u.v<01p4Wa{PQ#2QfT22c5*Faoi!&3)t%204m*Ea}l*sn^4y43j[s54m72gaRbW}ap*vg00KFOk(<BTkP*4P04o335f-j%5d5ZLapop@d/Zb72{ox.a%mgo1GAQEaorO^aoJg{0sKIX2)kUTD&XY$D&!=#D&XY$D&[<v04m*Ma{X+d0u?E^04m*Ya}bU2d/Y&03Nb!PaP-+^c&:@83lPr%001hLk(<NXkP*yBarRaV0C-?*aoiI]huiZXapQQqmG+$001YCA3M]^21UfM:aQGm{5f-k6a{s[?10vQ!0W4NR-SlE10sn<T0EK]$0EK@#0EK]$0EL00aoi!&2QfJ=^G7G(aoi!&3)D972p/=Wa}2O0SV.A^04m*QaQPs(c&:k>4m71!1va7p5fJ88k(>:A4J>-]4Mjp!1T1mu0y^hSaoh@V3KX6:a{xE%5fRu51Rq>22{GILaP&?/aoAU/5xj.Ue==05k]pdua{gbY3n}>!aoK[fhujZt10vO700<XHaosF55fI5$0Yy2}aoI#V07l!!00000000xm07l!!00000000x]0rEWo91SD320)+Fhui>520&kE03Ax*aojq12P%r]0x6]^ao&}&hujph1%s1a02cKWaoTO57:6291Vuu2ao&hR06#8xQxh2gE/T]$E/T{4E/T{4E/T]$E/T]$E/T]#E/T]#E/T{1E&[.t01p4}a@z*g2QgAo7PFR>aoi!&2Qg2}^G7Kbc&:I@arRyga%n0L6D[bj5*d<5a}W9wyASZ304m*Qa%e0ud/Zb89Whb{aQPs(c&:I%4Im4?a}k}23)uSl4g<Za9u>[n3M]^03U*<(k(>:A0W4E>01p4>a{YX02Qgii2Dw{Haoi!&3)uJi04m*Ea%PwOn^4y48w12lbs8uCaTFlhase]C00KF&k(<BTkP*4P04o3p5f-j%5d5ZLaq#Bdd/Zb786xa{a%m:E1/-ZGaoK{50zS=Ek(?ci0ylYR3J$@B0r<OGk(:BUE)B8saoB&{0zT1g3:G*A0!gr12.8(52y==40E>b$0E>b$0!gk#0!gk#0E(i(c&:V1aTdZM00<+>a@mg45G?6400<+-5yHO66ES}!aS?*v5f-ksa}(ajaq2.ey9BiP0C-?Vaoi!&3)D-p4>vR>a@}<qSV.V>04m*Ma}kai0u}}201p1<apF/9arhNkaQPs#apq<c2TFGbaP-+^c&:V18ZkIq00<+!aP&?!c&:V186Pnn01Zs>aP@[&l&Wh!0001fkW%}Daos^30zS!:01e{Vk(?cPMi1Dr1T0{<1.m:=aoB&{0zS!:01e{Vk(?ci14ia?00000003HiE&[+T08rX-01e{Vk(?ci1vJj&00000003HiE&[!U08rX-01fex3J$@401Ztu0r<OC5zEi[3XOP(0^>c22Z=Y62Z=/90EK@#0EK@#0EK]$0EL31aoi!&3)E5y8.g)]a%[Dlaoi!&3)D#w8y>!0a%Xrkaoi!&3)D]t5fH%301p4}a@I)h2Q7ul5d/%baT4Ev04O3XaRV40d/Zzg7^[u70001Hw<Aan7EP8(l@:4b2%+je77=A9aR=alaqHQ]6cE]g6qcGXap]Ucirfsc5d*3d04m*Qa%n3kaoi!&3)D=q4>vR>aS.:g5fJ8paQxg<d/Zb73lPs002M)&l&Wh!004KYk+/Ijl(mHzrqN*Bk+YCh5q{Mj3M]^03.!^Jap67@PDKK.1%sdh01ZmS5f-j%c&:I%13)2U1B?J]5fJ7}5zNo?E&[.t01p4(a{x7&irfsc04m*QaSIQ8c&:k>c{W(a1va7H5fJ8zk(>:AdJ!ZldMdnb1T2iV0y^hSaoi!&c)y8Ka%l<%2[4a-93LId0YZk(aoSl1k(.6h01Ztu01e@M01Ztu01fg}0sn^R2Z=Y62Z=V50^>600EK@#aoi!&6E1Ft3M]A$02cQ}a}#Kc2Q76d3LjB686GCi04O3(aRbW}d/Zzg6gq*20001Hw<Aan5>0M*l@:4b2%+je5Ff)4aRk+bap$m<4J(i64XK%Napxq2irfsc3LjH804m*Ya@zE7aoi!&6E1tq3m=8/aR(g35fJ8haP&?!d/ZXn1T0^}02M<]aoh@%aqD7bl&Wh!004KYk+/Iel(mHzrqN*Bk+YCc5q{Mj1%s6(2bimzaoJ.?PDKvV0u.C701ZmN5f:yu3/?r{0E>x50!gG60E>e#0!gk#0!hr)c&:V18ZbOi04m*Qa@RTtd/Y?#86xp#arRKB4iLT301Zp:aoi[(7:oRY000000dXVDQAQss7+FcP}YMnhQ9pfXI#+7kap/OaQ9g0?4iMdNaQ/F3apHmg2P%G^a%l>l01p4*aPSX=c&:V17A%hp01Zp?aor2@aqMa5aoi[(5fRi104O3^aR=a15f-kia{*Tq00000Fm.6wa{ZNNeKSOnaQHAda{OWq0u?T&1T12zaP@[&aoXtX0W4H^0YZk(aor2$k(.pY0UCM+0EK]$0ELc40ELc40EK]$0EK]$0EK@#0EK@#0EL00aoi!&6E1.B7+kN(a%wcDSV.#$04m*Ma@g:r0u@mb00<.<aqCCiarR<xaRL$haqnGl5KuCkaPSX=c&:@9a0ImD01Zs}a}HW%3lPr%00<+U5yHO64jzh+aSRWm5f-kqa}bR5apok0y9A%I0C-?Waoi!&6E1Iv2Rb(Xa@.ZhSV.D!04m*YaSqE6c&:k>bs8u51va7F5fJ8uk(>:AbP)7fbSkS51T23Q0y^hSaoh@V3KX6}a{GK$5fR]l1}R$386Pl:aP@[&l7!lN1B&Yr1T0?i07WF2E)B8saoT$gncBAd0r<OEl6.KD3KWuh0UCM+0EK]$0ELc40ELc40EK]$0EK]$0EK@#0EK@#0EL00aoi!&3)D(t7+kN(a%wcDSV.#$04m*Ma@g:r0u@mb00<.<aqCCiarR<xaRL$haqnGl5KuCkaPSX=c&:V1a0ImD01Zs}a}HW%3lPr%00<+U5yHO64jzh+aSRWm5f-kqa}bR5apok0y9A%I0C-?Waoi!&3)DVn2Rb(Xa@.ZhSV.D!04m*QaSqE6c&:k>bs8u51va7F5fJ8uk(>:AbP)7fbSkS51T23Q0y^hSaoh@V3KX6}a{GK$5fR]l1}R$386Pl:aP@[&l7!lN1B&Yr1T0?i07WF2E)B8saoT$gncBAd0r<OEl6.KD3KWuF0UkuZ1agx70ELc40EK]$0EK]$0EK@#0EK@#0EK]$aoi!&3)D&s7B]E>a%n6BSV.@%04m*Ma@7Wq0u@ja00<.&aqtwharI^vaRC[faqeAk5j3tjaPSX=c&:V19WhaB01Zs{a}yQ@2{oi@00<+T5yHO63[88:aSIQk5f-kpa}2L3apfd$y9A{H0C-?Waoi!&3)DSm2p/=Wa@RQbaoi!&3)DMk1$GV+a@zEaaoL1i000000aXu81B?J{l7!lN1WJa@1B&Yr1WOBPW&>[$1rW>U1B?J}l6.KD1WJa@1B&Yr1T0[n0000000000v*4o70ylYX1WJa@1B&Yr1T0}o0000000000v*4o70ZM/Y1WJa@3KWsBE&[.5b0=kkaoh#i0sGnQ0rNS>04O3(aP-+^5f-j#a]$85UE{s{/lPR<3N=5TD&XZw6^%4/a{bj$0yOIb9p8Pxn<x3[07l!!00000[in2}PBidH0^>2#bnzQb2QftVa]$7-lMCBKhAB6%aPK[g000000pSh}0h6..1qIq]1:*x31:*Vb0EL620ELf50EL620ELf51agc00EK@#0EK]$0EK@#k(-5fk(-5gk(-5hk(-5ik(-5jaoi!&2Qm4:5yHO52oT3}00<=k5yHO52P%v201Zu#03TPrarS&V.2U-yk(>:BjoCZg2%!L^1B?J#a@J/Mk(.n}kP*pW00<=gaVZ.LauBA:hxR#F02cT203TAN00<^>03Tz5aVyJ4aua3U0W4Z@00<=aaV7qFat^{UfDZuz02cT003TiH01Zu}03Tg#aU+8[atEQO10v<$01Zu{03T6carSrG.2U-jk(>:BeDVb13paU!1B?J#a@-@Ok(.n}kP*sX00<=1aUaVxas?vNcM&Br01p6>03S)y00<^/03S>(aT!DXasH$F1rW%#01p4#aTFlrasg}HaS{!l01p6&03SWs01Zu(03SU/aTe3Lar>Lz1T0<&a0pXfarR:GavVG-ao-]eaoJ=darqNCmG(6T3J@ZX0u?TPappynyA:-b0sGnT2%!Pca@Q<<1T16Za%ma4a}1=31{vgl04m*Ma}c:rmG!ib0r<OCc&:I%3QCd&3J@Zq0v[c)aR2Q{d/Y#3.2LOT5f-mk03I)+<n*zoap]UcQ9g3&4J(pQaQ]K{apQsharQW@a{x7?c&:I%6f#W?1B&Yr1T0^[00<+Yk)Z0*1va7gd/ZXn6^9Gb01p3/03zmMa%s-5aR$ZK0u&p57A:M?aR(gnaqQT]6D^A06GDdoaor2$1T0*Sa%l<%a}1+Zaor2$aoh@%3M]SYWGv9PE/T{2E/T{5E/T{2E/T{5E/T]$E/T]#E/T]$E/T]#E)B5T0ZM/f13(]g1vi2h1WJbi1%r)]00<=75yHO52oT3}00<=65yHO52P%v201Ztpa$%MJatswy0u%f.0C-(i0%x!Ok(:T.E&[}t3Q>j+01e]{ao%p{2Qg&zefClwen(WWaoi!&3)E+Sd>pP9b03[$SV-/lc)f%NaP-+>c&:I%cM%/V2{pNiaTe3ec&:V1iu/+101Ztla%:fiboOfMbwFw7ap6v}5f:4SaRk+saRqD<a%oeLyA:&51r[gs08rVDao<20mfL%S3J@Zq2Q/VUa%4)FapokizY]#v0vN{Ra#QR+d/Y&0h6K0taSqEvar1#r1rW%#01p4*aR#mdaqX@t6cEr701p5da@hWe5f-[O6@&z>aqk>iy9r:60Wec#1r!y25G?YQ1B?J$aRbW$aRk+bap}0Ck(.n}kTtz]1}8KXk(>:B4H-vC3M]:w0C->/3&{IO2Ong501Zs%2m@6!3M]SRkP*7}0000000000irgfA0t3BUaor2$3M]SYP8]39E&[.S14AAy5zvdd0ZM#Q1WJCX06{@m0UB2=aPT>fk(.Dha}kT}huj194fW<Ok)oZXE?prmaP$7lk[Mx-k(:j803zyQ/-rk#k(<mK5eux0aoKI42P%PXaojXimG!ib1WJqT0ZM/L3pbvq/-rl1k(<mK5eux1ao:U62P%SYaojXjmG!ib0ZN8T2%!LS3pbZA/-rl2k)Y*.k)Y*Sk)/[05zm7c2sezS01Y>?5fIfn00<XUao%!83)l8+aojXomG!hL*5Su6k)fE=k)]%Uld#qY2[U+<aQyvmk(.Dha}U}6huj195D@:10u??p1WJqT2%!LS3lPY//-rl6k(<mK5euw$app1b2P%J-3KWsI3*W($1aHA23X5h81B?J]c&:I%1viq.1B?J{d/ZXn1%r)@03AA#aoh@%aqk[6ao&}[PDKEY0u.La03Ax+5f:yu1T0^[00<+Pk)G<ZE)B8saoi!&2QfKu21w$6E&[+u04o3ca}+CfaqbmL02=%Wc&:I%5Fjdba}Lp@aR(gi5f-kja{74hyA:n>1r)}l08rUZaor><c)xxH3M]A$00<.Tapw-6apX$D0u}%}0$V1/6C8xf4g<Za6D)(c3M]&?*Yeln13(%6a{[.V1T0*Sa%l<%a}1=A00KFC5f-j%5f:yu3KWuz0$=h@0EL620ELf50EL620ELf50EK]$0EK@#0EK]$0EK@#k(-5fk(-5gk(-5hk(-5ik(-5jaoi!&2Qh2n^G7G@aor><2Qg#m^G7G%ao%p{5f:jXfC2uHfC853a$(j.yA+wk1r[dr08rVDao<1$mfL%S3J@Zq2pGMTa$T@?apfewzY{IK04m*Qb0c#0d/Y&0iWc5NaT[JZasR4G0W4Z@00<+@aTOrrasp}Ga%l>l01p5ia%!-t5f:7Tb=S1jar?{My9rW42Q/V:a#ZX?5fJ8s5wXw>avc3za%c)&a{{Qop6u4?1%KHB1WJa@1va7nc&:I%9W8KD3lQvcaShy6c&:V1hx<a>00<=aa@^K98xY[u8FQz#ap6v}3)DJi7A:5c7JgDgaor><3)EIL7aPv@a#pzTSV-606cF07aQ5$&aRt?1aRC[faqdcDE&[[r4<g@$5fIGa5jM*?01e]{k(&bk3M]^x0C->?3&{.zapgsmyA:e}0r<OK5f-k45f.F&ao?%laoiI+5A%il1T0*Sa%l<%a}2H$3-Tme5R07FleXdi5w!C>2TFITKC%nL.t$!^k(%u/Fb{j#0u?!o0ZVtE01^0FaQZNsk(.Dha}L>5huj195fIoq01o$Yapp1b5fIJb3Pm#0ap]X3k[1qia}D$&1u3k.ap*:shujph4<h9n00<XTk)f7C3)l6706{SK.0Iak.t$!Zk(<ok>kV7g0u?Oi0ytV401^0FaQ7djl9P5y5w!C>20&wT01Y>?4J><i00<XSaoTO53)l351Vut(apYH#hujBl4J$)t3>J:&4mbHEhui>54m71M01ZmZaoBC32P%Nx1u3k*apPE{k]pdua}c+/3n}>!apHKMhujZt3{:>K00<XQk[(iS3)k%A6Gb}5apGv)hujBl3)kNe02M*!3.WO427G2v000000000!0000000000k)d+I0u?Ce06{O@6^r/80ZNka3l/QsFcm+g1rW?k0x6]?aoS!*huj191vi2C01o$MaPT>S5dfP-l4xOa00BzDl4Pd@04Yk{k)f7C2P%i(05:/=aoL3*?qc]y?sS#)01ZmPl&Wh!004KIkSF/YaoL1i0000003<\u002F&03Ax^aosw2c)eQ1Zx1uvE):np00000002y!000000000+1Rxk=aPJ8c0u?Oi1viR=0ytPyk@6L=5zm7c13(@N01Y>?2oTab00<XLaP:}r5dfP=l4x7@00BzGk(&>z5fIf10Yy2:ao>ajhujdd1%B1kc>D.f1WNUKhui>51WN.whukoJ1WJqI00<XJaojq13)kZwr-Jd1rAncBirfQk1W&s<0001HrZnUB7:5#I00000002+VirgfA1T0?704n@[3+(Yy2.bkx000000000!0000000000k)m?J0u?BO*5Su1k)fE=k){0o06@Z&1q6k!aP>1hk(.Dha{Pj)huj192o:dm3>J:&20)+xhui>520&nF01ZmSaoBC32P%sq0x6]^ao&$&k}0oKa{yn.5&GZ)ao+5.0Yy3fao+4mhuj191T0!601o$Nl@)q/rAi5XkreYPao+dk00000Fl1]}02M*Zl&Wh!0000]kSF/!ao->*hukcF1Q&3B0sjfy0000006<BEl&Wh!00019kTtF-!=u]]5zvdd1vihS1WJCX06{@m1q6k!aP>1hk(.Dha{Pj)huj192o:dm3>J:&20)+xhui>520&nF01ZmSaoBC32P%sq0x6]^ao&$&k}0oKa{yn.5&GZ)ao+5.0Yy3fao+4khuj191T0!601o$NmbD+Q?qc]WkreYPao+dk00000Fm.5b02M*Zl&Wh!00014kSF/!ao->*hukcF1Q/5E0E>e#0E>Wj0u?EP/A0b%aorO^k)XaN0u?CebOgqb13}CGhui>513)hJ04n@(k)YBH2P%jq00000001cbirfEg10vO402cKTl&Wh!007}@kSF/YaoL1i000000pSik03Ax^3U/+AE/:##E?pijaPSeb0u?H!0u.Cf0t9/.aPK!N5dfP-l4xI800BzDk)PvGc)eQT0x6]-aoL1i0000003BJ!01o$Laojq16D^GC000000dX9nirf)s14ia?00000[in]karQ:]y6aG^0^>2#5z3}a0t9(:aP-+!aoB?g5y{>906}>w3l/NrFdKQs1rW!j2SqVhaoK[hhuj1914ia?00000iy2O83)kS{05:/>aoL1i00000&by}w02M*Xl&Wh!0002*kreY^aoJ0^0%9(MD&XZd/8W2}5zd1b0W4H^0ZNh9!=u]]k{N0Ga{gbY5h<H>aoK[nhukcF13)qM00<XHl&Wh!0000.kSF/MaoJ.^hujBl14ia?0001HrZnUB7:5]G00000008HMirgfA0$e&C0E>e#0E>Wj0u?EP/A0b%aorO^k)v[K0u?CebOgqb13}CGhui>513(#D04n@(k)xjE2P%i(05:/=aoL1i000000n{7401ZmPl&Wh!004KIkSF/YaoL1i000000000V03Ax^3U/+AE/:##E?pijaPSeb0u?H!0u.Cf2OtL/aPK!N5dfP-l4xI800BzDk(@}Ac)eQT2SqU*aoJ.^hujdd14ia?00000&6fj45fI6y000000dX9nirf)s14ia?00000nKbooarQ:]y6aG^0^>2#5z3}a0t9(:aP-+!aoB?l5y{>906}>w3l/NrFdKQs1rW!j0Yy3baoK[mhuj1910vO401o$Ll&Wh!0002SkreYPaoL1i00000Fl1]}02M*Xl&Wh!0000006734aoJ0e03znc2$t5E5BYY7aojXdmG!hL[C@!o06{VQ1B?0N0r<OCk){c+E?qhL1Rye73KWsI3Pd]b06{YR1B?0K0r<OCk)fTWE?p@E1T0!h1X5SA5BxG4aojXomG!hL)G0F5(&vF43KWs@00mSKkMTgLkMTg[06{*84G=Xj0rSYv]z]v53Lq$i3<3!F{5LN53Lr1j3&*UygYNPb0ZD/L0ZD/L0ZE>dk)g%k1onD70%w#$3jE4Bk@5&J3QC*x0T?pi3&{-401n&n3.^}duvK6$c&:I%hBdEn1va7f5f:yu4*%GWc&+Ut^/pNHc&:V1^F$EFk(>:BgxN+70ylYX1v93r0ZE>dc&+Ut^eUu(5fKmsaotdsE&[!v01p27aorPrncIoV3J$@40W[3Oa<Zii0W[3GbgDPU0ziFWaKy91arYelk(>:A!C{Y[aK{DI000fB!bR=nmG+$00UtUC3N0^@a$$buk)h1sc&:I%=J3lhmG+%WaKp30apxqC5f-my00KFD5f.8Za$+nz93JPcataiHaKf%heKowa1va7fc&+Ut+(w}y5fJ8Jaor5q03Tcea}aFWaoi!&c)D>na{ex0k(-2doAY?/11jcTaUaVoas/$^k(.n}E&[?w00<:>03zv(001j]06{ST1va9M01Zm}!=m#pyA.pfaoJ+r05:/S1T8v@k(<BTkP*du2[4a-+k-.qaos+hy?+u#2Qmy>k(:vSkM@pM01ZmXas[6FaJ:V/aoJf001f#2c&+kg:P9Ck5f-ms03S<TE)%Ma3&{.U04m*}bff:d1p#Xw03zqo1B?J%c&:V0cM&BjcRazb01e{VaoT7)2Qdj*aoT7)03Z4}k(<NXkP[8E5fJaF06{T3a>V&r1r=v$huiZXaLlVW0y^hSaoSkZ3KX8$03S*l0yl<8ya65/be%QG07E8R1T7!+5fIu6c>ENB-Sce+1p#:S3N3Vo04m*}be<Ka1Rq!x03zqo1B?J$c&:V0b{ijhb$Fh901e{Vao:d[2Qda^ao:d[03Za%k(<NXkP)#B5fJaH06{T3a>(#t1T8L1huiZXaLD/Y0y^hSao-q.3KX8}03S:j0yl<8ya65/beTyD07E8R1T7X.5fIu6cj?vz.Vf&.1Rq<T3Nc&A030f003AJ#a%s-5a%PwOyAT(AaS}%!030a85f.I.3M]Eo0C-(43<3!P3KX6Sc&+Ut.2LU/c&:V1ZYkL^k(:vSE&[.t00<+<5A<cr1%r)]04o3QaSzKd5dY{Far7>mao&x3au*}*5zvdd9ZG/)0yl-L0yl-e9Uv09aSRWAarhHA5BxDoaoi!&c)y!#8yLN]b0m4!k(>:B7Y%)+2set+1va7fc&+Utj0s>L04m*MaR#mb5fJ8i5A<cs79A?[5f:dDarRBha%n]<2}b=VaRk+5c&:V05G?xd01Zp^apfB@6D[bj2}b=<aRV49c&+kgiuORta%n(?6*S/J3l[sbl4xw400BC306{Py03AAv03z?h00<.703z>i01p1b03z[j01Zpf03z}k02cNj03z$l02M<n03A1m030cr03IXn03zIu1B?K1c&:V04J(004Oc:?01e]{ap6v}2Q8eI2Q/VMbhre:0ziFWauf]PaLV@.0C->m03zK&?2Gtk00KI206{SP1va7n5d5ZLaugLQao$gny?+u#2Qhh[07E8R1T2-na}2I7ao$gny?+71huj194?G]*apnV7ap5J501f[Ok(>:B4gAmvaoh@%3KYl21T0^Rb0=hp3^GXG2.8(5b.2&x0E>l11+cP31+cP33X5h80E>l11+cP31+cP334A270!gD50E>e#1+cP30E>e#8?d)o1B*D11+cM234z#61B*D11+cM234z#60E>b$0E>b$0E>b$1+cM20E>b$i!5mLc&+Ut(J5h(0vN{Rbi/gMKo4SFyA!/u0%x!Gk(:T.kP*4P04o5Q0u}NRavb#I0zASCaoA}>3)uSl0u-yN1WJa@1B?J}c&:I@>M8!cc&:k>(&xxMn^4y4>M8kqaNxa{0C->C0u.B^)eY9B00KIi0yl-Q1va7h5d5ZLaM@?I9V$FH1z?*300<\u0021i0ylYP1v9bk>k=bp3M{G4a%u4H1T0<Ta]?#{94g!3a)5!F91Tqp<]DRwaoi!&c)E:Na{ex0k(-2doAY?/11jcTaSqE7ar0=Ok(.n}E&[?w00<+e0u.E)001kh0yl-U1va9<0t3v@)G2POyA-cEaoJ+P0x6]T1T9jlk(<BTkP*du2[4a-<n*Czaos+hy?+u#2Qnpfk(:vSkM@p<0t3vYar7>oaMAFaaoJf001f$*c&+8c&Sget5f-mR0u&p57A:L&1va7fc&:I%d)Tnb1va7fc&+UtU(M3L5fKmsaotdsE&[[y01p3)03zp+:Pa<nk(.n}E&[[y00<:L0u.K]001kj0yl-U1va9l0t3v@[bU/QyA-iGao-[T0x6]T1T9pnk(<BTkP*jw2[4a-UMk@<03zqd1z?*300<^L0ylYP1v9bkUk]gS3N0N(5f-m20r<OH5f.8Zbff:j01ZrR0u/C-5f-m10v2L:5CDhH1sKlQaUs/td/Y#3e*7cx04o4[0u}ZVavb#I0zASCao<j]3)AN&aorR707WnV01e{Vao<j]2QcnIao<j]03Z$mk(<NXkP)ce5fJa^0yl:4a[CZS1%AHrhuiZXaO2L00y^hSao&w-3KX8U0v2I-aos+hy?+u#2QlqIk(:vSkM@ph0t3vYaJsx)a%r]!1T10Xa]?#{.#Ig=2QchGaJal>a%r(^beTz&a&17204m*Qbb>O!.t(7^2QlhFa&ad3ZYkH[0h7F<aoi!&c)CL&a{OV4k(-2doAY?/2pGMXaWd1Hau&s1k(.n}E&[$A00<:B0u.Q}001kn0yl-U1va9b0t3v@]z}kUyA-uKao%4Z0x6]T1T9Brk(<BTkP*py2[4a-Ru4(9aos+hy?+u#2Ql8Ck(:vSkM@pb0t3vYau{zYaF/8xao@D401f#lc&:V0QYzP35f-l)0u%UnaVQUBc&:V1Qx8M2d/Zb8Q5=z#aupM9PDM9l04m*}bb22Y2OnaA03zqo1B?K1c&:V0hY@bzh+j9r01e{Vap6v}2Qb&wap6v}03.aqk(<NXkP(Z25fJa?0yl:4a[(0W2Q5<xhuiZXaOC?40y^hSap5I+3KX8I0u%GC0yl<8ya65/ba!)407E8R1T6Ar5fIu6i1NnRP8/9r2OnfW3NdFS01ZrB0u:oia%rDTa#HJ2atL5}at:UX0u<9s1s<D?aUU2wd/ZXnODf&o5f-l/0u<f-bOgqbJSIH%5h<H>aDuH?2SqVhaDuHCeJ9OmaDuHCe&-[uaDuHCfe-!AaDuHCfGxaIaDuHCf/YjRaDuHDef+=sar}Hwed*Xs8u?k-c&+Ut*5Sx85fKmsaotdsE&]7D01p380u.y=G-KZFk(.n}E&]7D00<+30u.Z$001kr0yl-U1va9.0t3v@{YiUYyA-GOapom!0x6]T1T9Nvk(<BTkP*yB2[4a-/-rpK0u.ze1z?*300<\u002130ylYP1v9bk/z#Ka3M$f85f-mH0r<OM5f.8Zb7]$B01p450u^3@5f-mG0v0c%W&{n5aoi!&3)Km6b7Y?C01Zv80u)0{aB<FnFDqz!@qX5Xc&:V1!bZ=[04O3XbguMo@S18t03ImvP=@}aaoi!&c)E7ua}1@8k(-2doAY?/3N+#-a]qlZ0u?mtncIoV3J$@43N+#Xa<*rk3N+#PbkIsa0ziFWaKHi3arZHYk(>:A}Vd/EaO#f$000fB}t&>.mG+$03LiQL3N0*$bk.A-0yl<8ya65/bg3uR07E8R1T8d)5fIu6}#voLaKyb)apw-801g1E04m*Ma<Qfi}t.6JaKp6j}2E(E{5Dinc&:V1=h/c:04O3PbfZci{w=uf03I1oPDS[bbn}%g3)J)@bj${^00<^(0u}7naObNQ]z>Nd[=f*503H?jQAYgc5ru&o)/k:/w[CT!RC6mHaQGm>c&:V1:]JZN04O3Pbfo<e(hS4Ec&:V1:n)HK04O3Pbf6Zc(I@6)03HOcw=$vw2{O^ql&Wh!004KYk+Gnb3M]A$04o5h0u}%:avb#I0zASCapP.03)B*maorRG07WnV01e{VapP.02Qdd/apP.003.swk(<NXkP[2D5fJa[0yl:4a]IA:4iUPIhuiZXaP8ma0y^hSapO>*3KX8@0v3+daos+hy?+u#2Qmg/k(:vSkM@pG0t3vYaN5>qa%s/81T1l=a]?#{>kV[g5fX{(aM&.oa%s=7biw>p{w(DDc&:I@+M5:]d/Y#3+(w<^c&+Ut.t$?<5fKmsaotdsE&]jH01p4i03zp+<n.ZOk(.n}E&]jH00<::0u.>2001kx0yl-U1va9C0t3v@@Sbp=yA-YUapYK]0x6]T1T9^Bk(<BTkP*KF2[4a-.2U+w03zqd1z?*300<^:0ylYP1v9bkZYs#?3N1Kh5f-mj0r<OQ5f.8Zbi5UK00<:.0u*z55f-mi0v3I6W&%Seaoi!&3)Jy^bh&IL00<^Z0u{w3aM0ew?#Gz[^eUo?c&+UtYA6h!5fKmsaotdsE&]mI01p4b03zp+?2G$Hk(.n}E&]mI00<:W0u.[3001i[0ZM&V1va9w0t3v@Fc51qyAXlgap/PC0Yy2U1T5r%k(<BTkP*NG2[4a-Y8:bj03zqd1z?*300<^W0ylYP1v9bkX=Au+3N1pa5f-md0r<OR5f.8ZbhreD01p3Y0u*d$5f-mc0v3m#W&%x7aoi!&3)JgZbh92E01Zu-0u{a@aLlVp/-mV*^F$x&c&+UtWGdM-5fKmsaotdsE&]pJ01p4403zp+!=nkAk(.n}E&]pJ00<:Q0u.}4001i{0ZM&V1va9q0t3v@F=XjsyAXriap]VF0Yy2U1T5x#k(<BTkP*QH2[4a-We?G603zqd1z?*300<^Q0ylYP1v9bkV&HZX3N1435f-m70r<OS5f.8ZbgMVw01ZrW0u/[)5f-m60v31[a>3Al^eUrq03G.<5y{>9=hX%[a<Qch3[zr2a*Ia>3>KQ9Vh(b}06}>w3l>Jjl4xI800BB90ZN8I04n$J0WbX!huj19J@*DG0672/aDDND=hY:56D&CraKp3F02M&t0Wb?&irgfAJ@*GF03-c*ar}Kx+k-ah02=j/04m*}baFVT5Fc6J03zqo1B?Kac&:V0diFTldm:Rd01e{Vaq3142QbVraq31403W6$k(<NXkP(J%5fJ9G0ZM<5a+Y$u5G(=ehuiZXaCo!Z0y^hSaq2d>3KX8D0u%0o0yl<8ya65/banJ#07E8R1T6lm5fIu6dI9^DNGiNm5Fcb^3N3Pm04m*}baeDQ5!DfK03zqo1B?Kbc&:V0cM&BjcRazb01e{Vaqc752QbMoaqc7503Wd0k(<NXkP(A{5fJ9I0ZM<5a+{aw5*h@hhuiZXaCG}-0y^hSaqbj(3KX8A0u@{m0yl<8ya65/b9@r@07E8R1T6cj5fIu6c>ENBMJmmj5!Dk!3Nc]C02cPx0u-Z2a%rfLaT4%dc&+UtL(S6x5fKmsaotdsE&]yM01p1@aorPgncIoV3J$@46dr?^a^r0I6dr?Xb8up^0ziFWaD#)rarVEwk(>:AI2[!kaC*dT000fBHYP<ymG+$06a+DT3M$Vma%!ujk)h1sc&:I%Ll0@HmG+%WaD(*qapxqr5f-lX0r<OV5f.8Za%OGo7:k4yar}BwaD=:Ga%n3Kb5XREarIZGhujBl9$PRs01Zm}01/2d8u?k-c&+Ut&q>bp5fKmsaotdsE&]BN01p3g0u.y=Jr8MNk(.n}E&]BN00<+a0u-78001j20ZM&V1va9/0t3v@Iul6AyAXPqaqt@R0Yy2U1T5W7k(<BTkP*:L2[4a-?#L3Z0u.ze1z?*300<\u0021a0ylYP1v9bk?Vjoh3M$Dg5f-mO0r<OW5f.8Za+{7v04m*}bhJtA6+zGN03zqo1B?Kec&:V0IVB}3aD3m>1WJa@1B?Kec&:I@?2OSkc&:k>I#(oCn^4y4?2O6faDcv/0C-<r0W5j2Jrh0r00KH70ZM&R1va7A5d5ZLaL^5xI#+44k)h1sc&:I%*YoXvmG+%WaLV#eapxrJ0t3B$*YmN36+zL?3NgDec&:@8*w@BO0t3B$*w@HP0yl:3a=3dwHxeJN0x6](aCP$ea}2H]k(>:B77piEaoh@%3KYl23M5{CEf1*x7z4Yl7EsX{5q*Gj0KA%IY9[Sw69%6*D&!^2D&!=#D&!^2D&!=#D&!^2D&XY$D&XY$D&XY$D&[<y7z4Yl7Ev9Z5q*Gj7^O<g1vblU5CVtJ04m*MaSz0>0u@TO0000000000k)O4M0u&B904O3XaSRW9d/Zzf9V$Ck03ABiaoh@%asnlNk{N0Ga$k*d5h<H>asPOThukcFdiGM/00<X@ariot3)l#w9xs9hasOAOirf)sdiGY)03AykaPRWgaor2@aor5k0r+Ug0vN{Ra%!AJ5fIL.0u&v786x?T00<X+5f.I-3KXf<5fJheaor5g02!c64*%P#5fJhllf51SIua[ik[)2@kTtO=}2IVvc&:I@5!L0xa@rSE000000000+1}Yt^aRL$1d/Zb76D^Dc02M<]aoB4[ar-0M0UuK#bQ0{?bOgqbc{-v{hui>5c{W[)04n%raqcNj2P$Jr6e/?0asFuDirfQkc)fl+02M?baqM%qarS6Q0%p!h0$VN$0$:C)1va7ic&:V1bo^Wgaq1FLaRt?daq3Ql2P%V&a}aFW3Nlh]ar}Bu0$:q?8Bjul3NlD0ar}W*<nY:G0u}.l6IOZWk)E$%0u}T{00<.O5D8RN4NZo%00000002p&5y{>93lPE401ZpYaoTg{7:fqg1s<D{aTe3i5f-kvaQ{Z.5dfQel4xI800Bz(k(@}Ac)f(W2@R+?aswoshujddcM&^S01Zn2apHmg7:7gG4ljzhaswro13^$j5fJ805AiY[kP*jU01p4{a{OV45D8RM2P%u{2SR><ao@D43&{.zbm>zebm>$35z^y9k(.6O01fg*0Tw<T0EK@#1agc00ELr9k(-5dbnQ[lbnSVf2m#:[a}W9PpxS{G01PCZ7z4Yl7Ev9Z5q*Gj4)-rL1vblQaPIV<7z4Yl7Ev9Z5q*Gj5j4vk1vblRaPIWi3)tPU3M]A[4Inyoa]%7(2Q6u.@q!5HaoiO{aQ/F3l&Wh!0000003zWY!=u]#aor$)5fRo30v[c!aQxg>d/ZXn2{ol%04o07aor><03Say0ziFWaqkqeaqv9xyATDo0u-do000fB6Hq:?1va7gc&:V16+zMi0t2LB3M{9a3pc6K3l*oLFd::u1rXHDF=W?gefC-K1Vut^aqVd8hujdd7A-@y01Zm?ap6$c7:6Rq2@}#daqVdchukcF7A&?ZkP*atarQZ%*YmKyaoA}>3)Drd0$VN^@q!5AaoJ.?irfsc0$VT+0sGnW5Fc6f5G?b^?2E&G0%eKKjBY:0000000000x03-mc00<=ia{GB}93NGFE<kZS00<=ga{xv{7:q0Ak(.op1vSDybnIWc2QhnM11jc?a#/ZPk(?cl7aod*a#ZXEc&+8dhvxWO01e]{bnIWc2Qg#E2pGM(a$%c+bnIWc2QgGq3[88&a%Eetk(?cl7aod*a%wcrc&:/5apxw2mfF9a0r<X-c&:I%a0I1t02cQ#1B?Tic&:I%9u>+q01Zs]1WJa@3J@Z.000000dX9naPIV<7aod*a@.Znc&:@98u-q[000000dWK7aPIV<7aod*a@INmc&:/57Z98(000000n}lIaPI(T3K4:<c&:I%fcR5T02cRf1B&Yr1Ts^h00<=2a}=p75f-Uka}WlDE)B8sbnIWc2Qg=y5gvI)a$r.BbnIWc2QgYw4>4z?a$9QX01feqkTUOL0002SA6LMD1Ts^h00<+@a}#B96E1>bkTUOL00026B3H(G1Ts^h00<+{a@8Ha5f-w5kTUOL0000wy^ocz3KWsI1Ts^h00<=aa@hNb6E2vpkTUOL00000001ex1Ts^h00<=8a@qTc5f->jkTUOL0001Hw<vHt3KWs+03Iv/8xY5v02M}05fJho5zWu{UMj[fE/:##E/>63E<k^U00<+S5y7n03QHeU0u.:Y9u>?R0ZO:RV&I6&87kE<a{>.52T!T)00000pc+M#2sFK(00000sWnY92c5<JW&$@y00000003d!QAP^K[=f*ml4C)maoA8{a]$10RVvtHa]<[glbS:mV&I7hXtGu[0ZUlm5vqDRl71LJk@7.E5vqDRlfLfDk)P^K01=Hr8BpQ80ym5UF=MB&0sLkq5G300D&XZ0D&!^0D&XY#D[fWED&XY#E6rT30EK]$0ENW)boe9i2N0yq8Z>W(beBmF1v9Kl0v2zYk(>Zz.t>/3aI[ap00<\u0021*k(&>z2N7^P0u]F-bonfj2Qdm?aJBE8:n*01-Sepozx^41be:EE1v@UXbn}%g3)HDdbgDPy00<^60Wu7[l&Wh!00008k+PyI0idi:03-yg01p690Wu1(d/Zb8GArvA0idi+01={Da<H6j9vH)[a<Qch=hY0k0bA!606}flbfQ3g+k-+c5fJhraJTQa:]ANc01^fK8u*X60VBu84*@:Gbn.*e2Qf6Cbnzu#0x6]-5wOq<}t?=n0v5E8}2JwN2Qp9k00<^{0Wvyuc&+kh=h[b#k(?cl7aod*bfZfk{w(Vx7:vf91B&Yr1Ts^h00<^(0Wvssc&:/5:]RY}k(?cl7aod*bfo)g]-lDv6E7Q13KWsBE<kZS00<^?0Wvmqc&+kh-Suo)bnIWc2Qmj?bj+*-02M]#0T9#$7aod*beTEa[=pcs5f!%)1B?Tic&:I%.2+?J0vN{Zbesl-k(.n@k(.n@k(.op[bU@XE<kZS00<^-0Wv7lc&+khZ5!B!bnIWc2Ql}-bjkEW02M])0Tg<&3J$@77aod*bd^[2)eXQn5f!W!bj2t01B?Tic&:I%XDi#v0vN{ZbdEW#(h:rSk(.n@k(.op>(BiQE<kZS00<^T0Wu?ec&+khWGmVo0yWcvbnIWc2QlUTbiw[O02M]!0Wu.bmfF8+7aod*bc}s{<n*Ue5f!yY1B?Tic&:I%U(Vcf0vN{ZbcRaLk(.n@k(.n@k(.op&ShEKk(.n@k(.n@k(.n}kOeCE8vE=4c&:V1&q(jByA?Wq0%x!Fk(:T.kTtw)089JBbm#s73)BEdaoiLv0z0wW01e{Vbm#s72QlCNbhSzz06{:7ya65/a*7>??VjohaG+=i07E8R1T6@H5fIu6?VjojaG++H01g1b0ta5/8xY2C0C-[m0sO#p3Nloj01p7a0yl:4bh9511r)>j08rUZk(-2doAY?&5?0.*a>M/r0u*1}ncIoV3J$@75?0.=bcp[<\u002F-rh@k)h1sc&:I@To6J$0t3v@To7V/mG+%WaGLRQapxsB0t3B$To5L93Njg65z^Baaos+eyA?sg3&{.zbnhE93)Kj5k(>:B!bYTOa{74gp6r*F03ztp1B?Tfc&:V0^G7D(aKQoY1WJa@1B?Tfc&:I%S@:G]0u.Cf1z?*300<:F0Wb})5fJ9}0ZM/Q1v9bkSSA.O3N0[05f-l%0TeMibgcA5?t[Jq0ZM<5bg3u00sGnW5gvI!bf{oQ0C-[80rSDG13(]Z1vblMaoLpuE<kHM01p3{0u.E!+Mglrk(.n}E<kHM00<^F0Wt>&aoK[jy?+u#2QcbFaK6]#arWP:k(:vSkM@pe0UuEZaK6]#a%r/=1PO]O+k&gi0u96.k(>:B:]I[K3KYl2k(.DgbgM-r:PjWo5dfSh0ZRtthui>5!b?]phujph!b*=m0x6]-aK*DU05:/=aK*Do1vi2N01Y?*^/HYl0ymb93l)[1l4x7@00BB)0ZM&B01Zp30WbL+huj19^GhYmhujdd^GgM}bnhE93)JZ)k(>:B-SleAa{Hskp6r*F03zFt1B?Tfc&:V0YA6bVaIm.C1WJa@1B?Tfc&:I%RVF6Q0u.Oj1z?*300<:B0WbeS5fJ9)0ZM/Q1v9bkRudqK3N0a-5f-l]0TeMia?E+18w12lY8:b{5AS#@kP*gvarQ!f1}YX)8Bj=y3l)>0l4x7@00BB(0ZM/A01Zp20ZT)dhuj19^e(Q@12Zb/aKHllZ5X!O0u]tY5v.-:.#QBW0u]z.k)!:L0u/qYaJju)WGdL^0t8<za&jmC<nZst0t8*ya&1aA13(#O01=^za&ag4Z5Yv>0u/eUaI!6&Z5YbWao>ajyA*s<3&{.zbn8y83)Jj.k(>:BXb=Wma{Qylp6r*b5HWR/bdvOs0C-)/0rSDG2TFC=1vblMao$NyE<kNO01p3L0u.Q&Tn$&}k(.n}E<kNO00<^B0Ws-Eao$gny?+u#2Qb#BaGUUQarWDYk(:vSkM@pa0UuEZaGUUQa%rV.1PO]NR#Yf:ap7TzE<kKN01p3J0u.T<SStS]k(.n}E<kKN00<^z0WsVCap7moy?+u#2Qb]zaGCIOarWxWk(:vSkM@p80UuEZaGCIOa%rPY1PO]NSr1cu0u!ux5AS#@kP*jwarQ?g2n2![8Bj=y3l)*#l4x7@00BB>0ZM/A01Zp10ZT)dhuj19=&MH}12Zb/aKyfkT]P9y0u[=I5v.-:V&H-G0u[&Kk)!:v0u!-IaHIjYWGdLP0t8<za*Ibm<nZsd0t8*ya*p#k13(#O01=^za*z4<T]PVG0u!PEaH7}UZ5YbWap7mlyA/US3&{.zao$gkyA/RR3&{.zbm#s73)IIGk(>:BQYyM2a{*Knp6r*F03zOw1B?Tdc&:V0P-DnxaFw*b1WJa@1B?Tdc&:I%P-MBj0u.Xm1z?*300<:v0Wair5fJ9*0ZM/Q1v9bkPAkVE3M#eA5f-l&0TeMia!O&X8w12lPAcnQ5A:5%kQdmm0x6]-bm$Ffbm#485BfruQx7]I3M]:w0C-)K0sO#p3Nlih01p6y0yl:4baO-p1r[gs08rUZk(-2moAY?&5gvI!a^h{H3lUJkncIoV3J$@75gvI:ba!]XLMq)lk)h1sc&:I@O=Q400t3v@O=RgTmG+%WaF5SCapxrR0t3B$O=P5}3N7Vlbn}aoaD=:I8w8fm1vagGc&:I@MJowLapp^BE<kHM01p3u0u.Z(N/M4-k(.n}E<kHM00<^t0Wscnappyqy?+u#2QbYtaE&DzarWfQk(:vSkM@p20UuEZaE&Dza%rxS1PO]ONGj/p2QbVsaESrxa%ruRbaeDy}t?+b0u^ZfaEAgAa^JcN7:baBhuj1c5d/%e5fIq>(hS2[0t3B.appynyA!(w3&{.zao:d[3)H=lk(>:BJ@Ys=a}3Wpp6r*F03zUy1B?J$c&:V0Jr7dfaDly)1WJa@1B?J$c&:I%NGsW[0u.+o1z?*300<^p0TeMia=DBD5!Dfg5*ibl5A%fsIVBwkapyEoyA!Sp3&{IO1Rq<=3M]N201p6d0yl:4b8um41r[mu08rUZk(-2ooAY?/1sKlUa+*1u3)po9ncIoV3J$@41sKlQba5AQHxeIak)h1sc&:I%MJvr<3N7i8bngRhbnhhN0taF}b7]$da%mpW0C-)i0sO#jaoSl13KXf>c&:V1F=OdryA!rg0%x!Sk(:T.kTtw)4nl[Obm#s73)CixapPE+07WnV01e{Vbm#s72QkMobj><T4m7bkya65/a^A9K]z/BBaE90]07E8R1T66i5fIu6]z/BDaE90i01g1w01^(=1vagz5fJhfapO[F03.7o5f.oz03z.A1B?Tdc&:V0{w=rBaOL>b1WJa@1B?Tdc&:I%LMA6703z.p1z?*300<:i0Wdmr5fJ9V0ZM/Q1v9bkLl8pr3N2iA5f-lX0TeMibk80F&@GoFbn.*e2Qf6Bk(-2poAY?&5HWR/a].J+4iUVJncIoV3J$@75HWR+b9A0KFb{=4k)h1sc&:I@KPDUQ0t3v@KPE/GmG+%WaDVZpapxrx0t3B$KPCW^3NkMIc&:I@KocN701Zs%KocT801!#ca]zr.}V4=p0brXN03-s6}t-zN2Qo])ar}Ev4g}?9bkziIa}1=34m72gbjLTw0sGnW6dr??bjCN#0C-[F00ruF4Ny7&1vblMap.6FE<kQP01p4q03z:](&oMWk(.n}E<kQP00<^f0Wv1iapZWuy?+u#2QbifaNGduarVWCk(:vSkM@o<0UuEZaNGdua%q)E1PO]O(I}HO0r+Uj6a=oh6cE+@>(q{}01ZsZapZWryA&3z3&{.zbn8y83)K{ok(>:B>L$X/a}D%tp6r*F03z!C1B?Tec&:V0<P3zlaMSO]1WJa@1B?Tec&:I%Jrgr^03z!r1z?*300<:b0WcR95fJ9O0ZM/Q1v9bkI#<Lk3N1Ni5f-lQ0TeMibie.n?#J%Cbn7Lgbn8af5A%fs>kV5q3M]%C0C-[t01n(o3Nlih01p7h06{T3bh&I71r[yy08rUZk(-2soAY?&5gvI!a(ihw5fP*fncIoV3J$@75gvI:b8VHD?Va=gk)h1sc&:I@Iuj{T01Zm}Iul6zmG+%WaC{jiapxsH01Zs%Iui}Y3Njyb5A9S)kQc*Kar}Bu5d[abbh-Cja}2I8k(>:B*Yd--3KWKC0u9g05fJhllfFK+Iua{Q06{YY1v9K$0u8s<5HWR/bh92.0C-[j00ruF5Kuy(1vblMaq4oIE<kKN01p4503z<@/8OtBk(.n}E<kKN00<^90Wum%aq3)xy?+u#2Qb09aLlV9arVEwk(:vSkM@o^0UuEZaLlV9a%qWy1PO]O!=loV0u96)k(>:B!C{0U3KXf$5fJho5C#LE3Nlrk01p6!06{T3b0Meja}^fwp6r*F03z[F1B?Tfc&:V0jS>vWjXb-x01e{VbnhE92Qj)5b0EaZk)h1sc&:I@F=W5U5fJ9E0ZM/Q1v9bkF=VGa3M}RAa%qEs1PO]Ojp{0y8xYUU0C-(v3&{.zbn8y83)E.#0C-(t0%x!Yk(:T.kTtw)6heKUbn8y83)vLL6cGk81WJa@1B?Tec&:I%FDv2Paqm3zy?+u#2QaZ1auf]PaB<IV07E8R1T5r%5fIu6i1NnRFc2(O3NdFu!bZEg6f#Uma#G=f3KXg0c&:I%g^}Kjbn}aobn}cx0u8s<5HWR/a#qH=yA+Io1r[KC08rUZk(-2woAY?&5HWR/aUU2Matus&k(.n}E<kKN00<\u0021G0u%lv6Hq>rya65/a]RG+f+tDI@Sbp+mG+%WaPqxMapxqD5f-m@0r&Dha$<IR0u96{k(>:Be^}:*3Nlih01p56k(>:Becu206*R*{1vblMaqEMME<kHM01p22aqD1GncIoV3J$@75gvI:bk?J^d<bM)1z?*300<+C0u-)7arZN.k(:vSkM@qd0t3vYas!0EaP8lz01f#15y*!1aqEfyyA+en0sGnW94g^)1B&Yr1Ts]%ar}^o&@GJhcNfPNcPg@gbn.*e2QgPb=hY4mk(:gT5vqDRlc#Lhk(:gJ5vqDRlaA&]k(:ip0t8Qs8y3dJ03AEhl&Wh!00014k+YCESV&T@a%xtO0000009INZa%mD/03SHJ6Hw2=5vqDRbn?)f2Qgt0a@%5K0000008t!Oa@&#J0000009INYa@^Ka8N*[dl&Wh!00014k+/Iu5B]/B7EvL*0t3m}7d4u*l6.J.V&HKr01:.-3O.U+E?n*+a{5sV0u?E*7aod*a{ex2bnIy5huj1c9W?0]a]<[fmG!hLG8#ix01fes01:>^8vGgs1B&-4HsuhmRu4?xk(&8g5uC)JleIdk1RvKiaP:}jaoAaQ0uan6=I!4WRu4?vk)5kg5uC)Jli3F?0UzjfaPK!faoh$O0sG8i5qQxa3KD!AZx2k:GAqLz6AGXklJv8=%nSc0CFty7lJv8=%nSc0{X$ldbMZmMli4Mpa$k?VhVKaadmeMnFpJf2FpF+301Zn4lBrzJGz.^Q!6XjP02M?clC6d%{r5+:&tsGNarSa1HlhB}HOh68}#wUQc)f%9{20EfJF)?26e][BasPUBJ[HCYKbn$W05<)qasPTeJ?swiOtjHMhVM8=dmipzI[]4$]pj+thVMw>dmi<#[T2i#/7P}s08K^!lIW2BP7J6EScHr4srG4VK(%{b/s[DC5JoX$asPUvUCFZ/?llFF05<)>asPTYSJ(AyU&AqlhVN!tdmisuKJ<ib@]]t<hVO7BdmgI:-!fJ1WX1o[0dU7)dmht2}}nS+Zn82[0eHT#dme#%^.j99Hpv^N0fvj7dmf^eZr:B8P{VSO0gi^fdmhqyWXyz9)ZB5)0h6undmfu/P5tw6X+AjQhVP=SasPT=VEt}FVw)DHhVQ5.asPTK-nHBQ:^PPY05<[/0u-*TK*RmS]neNu9YB8m0u-*TPzOFr)X3JpN143{:n)zjlF3).)A:pm:ql=n=&Cmrlxp]sINS2-KDj(I0n4q{dmgtR&i}l/-HNS20n)(2dme:=^4=/]-g:z+hVS4xasPTV!9cY4G-dtVhVSsFasODzk[1qia$b:c1u3k.asGIRhujphc)f0T00<X}k]}]:3)l@z13)O^01Y?*cQDmt^v{!500<X{lb/<?at%idasxE9PPBW8hujphcQA#MFc4Re6D!+?FpJr61u3k%asxF9S)#[dhujZtcQDk/huj<xcQCX31u3l9asxE9FpJdMhukcFcQCO0Fs)3604Ylulc$BMF^14jfD.-e!pu5G1VuuqasxF8S*eFChukYVcQAokFQ^>Y06zwKl4KMp2SqVFasxE9IuC*ql)9<yK/llR1VuuKasxF8S)@NS08aH.k(-!yp-}be4m7yl3l*/.Fcm+g1rY3S0x6]?asniuhuj19cp5q601o$%bM{yKli4Mpa%/LQhVKaab%)cjFpJf2FpFg&01Zn0li5}A7:7a>X-]6m]oPva6Gl1masfvoW^frs.ka7vhVLlGb%)QH]Sc9[K>*{m05bJwlGTxx)bT$y<lV?905#8ElImR.T/hf+Q7Gr:kP?vt+b{#@QQ6uGyC#k:asfwL.@ui^}[5*yhVMU%b%]nuX%oNL)+>E4hVM@5b%)l@W+oiDNc+>L0al]}lA(<M}@)ps*1MG=0b9G3lyc&U}NL27^H[FsA3cC[}(bHXX2u{TA5N=wasfvn=/ZwrQs>FxhVOveasfw3&{U9[(4F/rE(vv-0u-WPSf>Ag(AG=va2:gY0u-WPGt9g%X7P@u7b(kX0u-WP>7PI&:({r$6Gl2+0u-WPU/&-A!79j3G)#2YR#X1!lwsy0RLgW5FF{DEUMk<)lw}2?+?6C)O^vsQXb^Y#lFeZ6!yiNR>mxMLZYtM7lAGOL[Wm!/Okh6z:n)zflCy:!^:dcT?4.<G=&CmnaQ*TB5dfQbl4x7@00Bz&k(&>z5fJkv3]O7>as6k>hujddbQrKV6*R*h6E1+/05:/.ar%eLhujddbs8q/01Zm$k(-!y6D!R^FpJf21u3k%ar%gqV.+?GhujZtbsf>W^w^vd03Ayel6XF2Virb^bP[r$GO[on1u3ldar%glSmuF5hukoJbsfqy!Uig805bJulbnw]Q69vOg:12e^5LS@1u3ltar%g5FpSjNhuk&Zbsfb3KG%c&06?UKlfkc1SS+oXl)9Zu-EKkF1VuuKar%h1G4kwOhulz[bsf>O!#w)i08K^.ldI#^IuL)rr3izKG-TdjsrF?i3QCgj3l*VWFcm+g1rX)O0x6]?ar?{ohuj19b0=@401o$]bNcKMli4Mpa%xnNhVKaaaWMt>01Zm@lk.YZ7:6$*@qX+RarR*][Dp=Jc)fW1Whp?5fD.J9Itvih05#8AlAPkIhVM8=aWUeN7Dhs+ar:8kN!D!v08K^YlIVt+1ucr.ar:8cOUN5X0al])lEz49]z*/IxDOD+Mfj1z1ucs1ar:8oGr:nGhVO7BaWRfL{1eZlhVOvear:7/?]Svq1ucsp0u-KL-OH3GNIE*ZKo3EElFo?])sK^bhVPiCar:7+QjPe2S@$uYPAceUlB0RIUGblfhVP=Sar:8A?mh!iWD)(L0i=FDaWTr3O0<5gO=*$LXb^Y}lHy?h@[b2L6/Mcd0u-KLQ1={EYU<m605<]00u-KLRo1nnU*G+s1uctc0u-Ke3pb7i3l*PUFcm+g1rX*M0x6]?arR^lhuj19avc]701o$)bNlQH5dfQ6l4xk000Bz^k(-!y7:6[!05<(-arJ]IhVKyia0.aT21eB>00000000MHa%6dBRQDT=/YtmR00<X*md.SKSPAkBZbVf8arA}vnpsL09MHu702M?1l<8tY8k40WZC#oparA}${yE]G5Rieb04n%hl}yrTrAi5rZC#oFarzWjk[1qia@@$11u3k.arr-Ghujph9uUUD00<X/k)xjE3)lMo2%!+-00000000005e#/kl&WjjPH]0UY/u5#ari/er.!1j)JB+O01Zm)me6uQEOUAQZbVfgari/wm93ms0S1#u03Ay7m3goY7hQ//ZC#oxari^xrAi40rI.]u05bJnaQyvx5dfQ2l4x7@00Bz-k(&>z5fI]m2SqU*ar9PJhujdd8ZC+R1W&s<00000000MHa@S>lchj9.0pmDX00<X=m0:x0tu018Z=qxaar0T?0/e:[Z/4%d02M*%l)YzFeX!/4Z=qxqar0Ud()R*DhC?gH04n%daQppw5dfQ0l4x7@00BzZk(&>z5fI&k2q#L/aq)DGhujdd86/OQ1W&s<00000000MHa@AZgu>=?-*C?CU00<X:l).Ytl/1zCkSF/Qaq^HdZt^MT4TQD302M*}mcWvF6f/JDkSF/!aq^Jkv.IVgqd@iP04n%baQgjv5dfP$l4x7@00BzXk(&>z5fI=i1#VC!aqWrEhujdd7BfzPas4yZ1saEy5f}=L06{O@6^szp1WJLd3l*iJFcm+g1rXBB0x6]?aqD15huj196*R*T01o$+bOilwk(.Dha}#g6k[1qia})m)1u3k.aqm3whujph6cEAo00<XXk(-!y3)lie5Kuy.01Y>?5*muy3>J:&5Ky{Ihui>55KuBQ01Zm+aoKI42P%ZB05:/=aq2>ik(:gJ5eux2aP:}r5dfP(l4x7@00BzPk(&>z5fIGa0Yy2:ap*:rhujdd4<R/O01+X4bOSJA5s@[F6+EFFa]@mE0veA(H5&E#5qpcg7En3jO=H8Nk(.E/0veJ])/sWLk(.E^0veQI01+U3bPExY0veWK0t7?6bPWs3=#/u?l7*1w:AvK.%nRV%002v^xAhDvASviZzVB[WBo0A-zVBwHaolAZve$fBx8(Gy0096100960%nRV$001bwvGpJJBo0A-Bo2$OwDi?Mx-J2Jwb{fvCMn&^x-JhOaohxw00ri30000000960%nRWa003ZkzuahEwDl@PaolrWBPuH-aolrWw=J}NvGprDBPupVwb{VJiSHo5Bo2$OwDi?MyYF2Dzu7^Vx-JhOaol0NASy1Tz2+WUfAri}Bo3jVaohxw00ri30000000960%nRV$003)pwDluyve$xHx-JqRwDi?MzuakFCk@-=yYF2DzuaqHBo2$O009610000000960%nRW1002N<yYFnKwDluyve$9zk(+{9x8)5Oz2!bEzua+Umf4Mjv/Q6uz#:$Wx-J5Kzu7^V0096100960%nRV(001XMe=WN9009610000000960%nRV]002N<zuanGx-J2Jx-JkPC(N*A00ri300960%nRV>001OJ0096100960%nRV>0000000ri300960%nRV(002:]ve%45009610000000960%nRV>001XM0096100960%nRW20046uwDlowwb).Lz2!XUA@ZpZaok<JwDi?Mgxofgaok<JC(R{^wDl=KaoliTzVBUPx8?]i00ri30000000960%nR^0002qKlQTvjm[uizoh55PpF:[^q=D:$s6eQef!$Kwh8UBm00ri300960%nJ61000000000000960%nJ61000310000000960%nRW2002*}ve$9zwDl/LBo2>Laol9QzuahEwDl@PaolrWBPuH-aolrWw=J}NASxIFzuaqHwDhYg00ri30000000960%nRW2002H?ve$cAwDlVHve%*raol9QzuahEwDl@PaolrWBPuH-aolrWw=J}NASxIFzuaqHwDhYg00ri30000000960%nRWd002E*ASxIFz2!bEaok<JBPu1Nw=MxxASviZx-J2Jwb{fvCMn&^zVB!TaoluXve$9zwDl/LBo2>Laol9QzuahEwDl@PaolrWBPuH-aolrWw=J}NASxIFzuaqHwDhYg00ri300960%nRWl001XMfAr*cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cfAq7M00ri300960%nRWR001.NfAr*cfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cfAr*cfAr*cfAr^bf-S)cf-S)cf-S)cf-S{dfAr*cfAr*cfAr*cfAr*cf-S{dfAr*cfAr*cf-S{dfAr*cfAr*cfAr*cfAr*cf-S{dfAr*cfAr*cf-S{dfAr*cfAr*cfAr*cfAr*cf-S{dfAr*cfAr*cf-S{dfAr*cfAr*cfAr*cfAr*cf-S{dfAr*cfAr*cf-S{dfAr*cfAr*cfAr*cfAr^bf-S)cf-S)cf-S)cf-S{dfAr*cfAr*cfAr*cfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cfAq7M00ri300960%nRWl001.NfAr^bf-S{dfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr^bfAr^bfAr^bf-S{dfAr^bfAr^bfAr^bf-S{df-S)cfAr^bfAr*cf-S{df-S{dfAr^bf-S{df-RgN00ri300960%nRWR001XMfAr*cf-S{df-S)cfAr^bfAr*cf-S{df-S)cfAr*cf-S{dfAr*cfAr*cf-S{df-S{dfAr*cfAr*cf-S{df-S{dfAr^bf-S{dfAr*cfAr^bf-S{dfAr*cf-S{df-S)cf-S{dfAr^bf-S)cf-S{dfAr^bf-S{df-S)cfAr*cf-S{dfAr*cfAr*cfAr*cfAr*cf-S)cfAr^bfAr*cf-S)cf-S{dfAr*cfAr^bf-S{df-S)cfAr^bfAr^bfAr*cf-S)cf-S)cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cfAr^bfAr^bfAq7M00ri300960%nRWR001.NfAr*cfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cfAr*cfAr*cfAr*cf-S{df-S{df-S{df-S{dfAr*cfAr*cfAr*cfAr^bfAr^bf-S)cf-S)cfAr*cfAr*cfAr*cfAr*cfAr^bfAr^bf-S)cf-S)cfAr*cfAr*cfAr*cfAr*cfAr^bfAr^bf-S)cf-S)cfAr*cfAr*cfAr*cfAr*cfAr^bfAr^bf-S)cf-S)cfAr*cfAr*cfAr*cfAr*cfAr*cf-S{df-S{df-S{df-S{dfAr*cfAr*cfAr*cfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cfAq7M00ri300960%nRW%001.Nf-S{dfAr*cf-S{dfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bf-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bf-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bf-S{df-S{dfAr^bfAr^bfAr^bfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bf-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S{df-S)cfAr^bfAr^bfAr^bf-S{df-S{dfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bfAr^bfAr^bf-S{df-S{df-S{dfAr*cf-S{df-S{d009610000000960%nRY6001XMfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cfAr^bfAr^bfAr^bf-S)cf-S)cfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cf-S{df-S{dfAr*cf-S{df-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cfAr*cf-S{dfAr*cfAr^bfAr^bfAr^bfAr*cfAr^bfAr^bfAr*cfAr*cf-S)cfAr*cf-S{dfAr^bfAr^bfAr*cfAr*cfAr^bfAr*cfAr*cf-S)cfAr^bfAr^bfAr*cf-S{dfAr^bfAr*cfAr*cf-S{dfAr*cf-S{dfAr^bfAr*cf-S)cfAr*cfAr*cf-S{dfAr*cf-S{dfAr*cf-S{dfAr*cfAr^bfAr^bfAr^bfAr*cfAr*cfAr*cf-S{dfAr^bfAr*cfAr*cf-S{dfAr*cfAr^bfAr*cfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr*cfAr*cf-S)cfAr^bfAr^bfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cf-S)cfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cf-S)cfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr^bfAr^bfAr^bfAr^bfAr^bfAq7M00ri30000000960%nRWk001.Nf-S)cf-S)cf-S{df-S)cfAr^bfAr^bf-S{df-S)cfAr^bfAr*cf-S{dfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bf-S{df-S)cfAr^bfAr*cf-S{dfAr^bfAr^bf-S{df-S{dfAr*cf-S{d009610000000960%nRWQ001XMfAr^bfAr^bf-S)cfAr^bf-S)cfAr^bfAr^bfAr*cfAr*cf-S)cfAr*cf-S{dfAr^bfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr*cfAr*cf-S)cfAr*cf-S)cfAr*cf-S{dfAr^bfAr*cfAr*cf-S)cfAr*cf-S{dfAr^bfAr^bfAr^bfAr*cfAr^bfAr*cfAr^bfAr^bfAr^bfAr^bfAr*cfAr*cf-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr^bfAr^bfAr^bfAq7M00ri30000000960%nRX1001.Nf-S{df-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{dfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{dfAr^bfAr*cf-S{df-S{df-S{df-S{dfAr^bfAr^bfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cfAr^bf-S{df-S{dfAr*cf-S{df-S)cfAr^bfAr^bf-S{df-S{df-S{df-S{dfAr^bfAr^bfAr*cf-S{df-S{df-S{dfAr^bfAr*cfAr^bfAr*cf-S{d009610000000960%nRYe001XMfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bfAr*cfAr^bfAr*cfAr*cf-S{df-S)cfAr^bfAr^bfAr*cf-S{dfAr*cfAr^bfAr*cfAr*cfAr*cfAr^bfAr*cfAr*cfAr*cf-S)cfAr*cf-S{df-S{df-S{df-S{df-S{dfAr^bfAr*cfAr*cf-S{df-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cf-S)cfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cf-S)cfAr^bf-S{df-S{df-S)cfAr^bfAr^bfAq7M00ri30000000960%nRV]001XMfAr^bfAr^bfAr^bfAr^b0096100960%nRV$001.NfAr*cf-S{dfAr*cf-S)cf-S{df-S{dfAr*cf-S{dfAq7M00ri30000000960%nRV$001.Nf-S{dfAr*cf-S{dfAr^bf-S{dfAr*cf-S{dfAr*cf-RgN00ri30000000960%nRV$001XMf-S)cf-S)cf-S)cf-S)cf-S)cf-S)cf-S)cf-S)cf-RgN00ri30000000960%nRV$001.Nf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-RgN00ri30000000960%nRYj001.Nf-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S{dfAr*cf-S{dfAr*cf-S{df-S{df-S{df-S{df-S{dfAr^bf-S)cfAr^bfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr*cf-S{dfAr*cf-S{df-S{df-S)cf-S{df-S)cf-S{dfAr*cf-S)cf-S{df-S{df-S{dfAr*cf-S{df-S{df-S{dfAr*cfAr^bf-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S)cf-S)cfAr^bf-S)cf-S{df-S{df-S{df-S)cfAr*cfAr*cf-S{df-S{dfAr^bfAr^bf-S{df-S{df-S)cfAr^bfAr^bfAr*cfAr*cf-S)cfAr^bfAr^bf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S)cf-S)cf-S{df-S{df-S{dfAr^bfAr^bfAr*cf-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S)cf-S{dfAr*cf-S)cfAr*cf-S{df-S)cf-S{df-S{df-S)cfAr^bf-S{dfAr*cf-S)cfAr^bf-S{df-S{df-S)cf-S{dfAr^bfAr*cf-S{df-S{df-S)cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S)cfAr*cfAr*cf-S{df-S{df-S{df-S{dfAr*cf-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-RgN00ri300960%nRYj001.Nf-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr^bf-S{df-S)cf-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S)cfAr^bfAr*cf-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bfAr^bf-S{df-S{dfAr*cf-S{df-S{df-S{dfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cf-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cf-S{df-S{dfAr^bf-S{dfAr^bfAr*cf-S)cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr*cf-S)cfAr*cf-S{df-S{df-S{df-S{df-S{df-S)cfAr^bfAr*cf-S)cfAr^bf-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bf-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-RgN00ri300960%nRYj001.Nf-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bfAr*cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{dfAr^bf-S)cf-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr^bf-S{df-S)cfAr^bf-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S)cf-S{dfAr^bfAr^bf-S{df-S{df-S{dfAr*cf-S{dfAr^bfAr^bfAr*cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bfAr*cfAr^bfAr^bfAr*cf-S{df-S{df-S{dfAr^bfAr^bfAr^bfAr*cfAr^bfAr^bfAr^bf-S{df-S{df-S{dfAr^bfAr^bfAr^bf-S{dfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bf-S)cfAr^bf-S)cfAr^bfAr^bf-S{dfAr*cf-S{df-S{df-S{df-S{dfAr^bf-S{dfAr^bfAr^bf-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr*cfAr^bfAr*cf-S{df-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-RgN00ri300960%nRYj001.Nf-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bfAr*cfAr*cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{df-S)cfAr*cf-S{dfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cf-S)cf-S{df-S)cfAr^bfAr^bf-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr*cf-S{df-S{dfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S{dfAr*cf-S{df-S{dfAr*cf-S{df-S)cfAr*cf-S)cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr*cf-S)cfAr*cf-S{df-S{df-S{df-S{df-S{df-S{dfAr^bfAr*cf-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-S{df-RgN00ri300960%nRXM0rs!NfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cfAr*cf-S{df-S)cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{dfAr*cf-S{dfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr*cf-S)cfAr^bfAr*cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr^bfAr*cfAr*cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr*cfAr*cf-S{df-S)cfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cfAr*cfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cfAr^bf-S{df-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cf-S)cf-S{df-S{dfAr^bfAr^bf-S)cfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cf-S{df-S)cfAr*cf-S{dfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S{dfAr*cfAr*cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr*cf-S)cfAr^bfAr*cf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cf-S)cfAr^bfAr*cf-S)cfAr^bfAr*cf-S)cfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr*cf-S)cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAq7M00ri300960%nRXM0rs!NfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr*cf-S)cf-S{df-S)cf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr*cf-S)cfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr*cfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bfAr*cfAr^bfAr^bf-S)cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bf-S)cf-S)cfAr^bfAr^bfAr*cfAr*cf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cf-S)cfAr^bfAr^bfAr^bf-S)cfAr*cfAr^bf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr^bf-S{dfAr*cfAr^bf-S)cfAr^bf-S)cf-S{df-S)cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cf-S{df-S{df-S{dfAr^bfAr^bf-S)cf-S)cf-S{df-S)cfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cf-S)cfAr^bfAr^bf-S)cf-S{dfAr^bfAr^bfAr*cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{dfAr*cfAr^bfAr^bfAr*cf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S{df-S{df-S)cfAr^bfAr^bf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S{df-S)cf-S)cfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAq7M00ri300960%nRXM0rs!NfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S{dfAr^bf-S)cf-S)cfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S)cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cfAr^bfAr^bfAr*cfAr*cf-S)cf-S)cfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bf-S)cfAr^bf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bfAr^bfAr^bf-S)cf-S)cf-S{dfAr*cfAr^bfAr^bf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bf-S)cf-S)cfAr^bf-S)cfAr*cfAr*cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S{df-S{dfAr^bf-S)cfAr^bf-S)cf-S)cfAr^bf-S{dfAr^bf-S{dfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S{df-S{df-S)cf-S)cfAr^bfAr^bf-S{dfAr*cf-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cf-S)cfAr^bf-S)cfAr*cf-S)cfAr^bf-S)cf-S{df-S)cfAr^bf-S)cfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr^bfAr^bfAr*cfAr*cfAr*cf-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cf-S{df-S{df-S)cf-S)cfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cf-S)cf-S)cfAr^bfAr^bfAr^bf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAq7M00ri300960%nRXM0rs!NfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr*cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{dfAr^bfAr*cfAr^bfAr^bf-S)cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cf-S)cfAr^bfAr^bfAr*cfAr*cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bf-S)cfAr^bf-S)cfAr^bfAr^bfAr^bf-S)cfAr*cfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr^bf-S{dfAr*cfAr^bf-S)cfAr^bf-S{df-S{df-S{df-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S{df-S{df-S{dfAr^bfAr^bf-S)cf-S{df-S)cfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bf-S{dfAr^bfAr^bfAr*cfAr*cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{dfAr*cfAr^bfAr^bfAr*cf-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S{df-S)cfAr^bfAr^bf-S{df-S{df-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr*cf-S{df-S)cf-S)cfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAr^bfAq7M00ri300960%nRV$002T(x-I@HyYCNTz2!FOASxUJaok%MzuakFz2!nIwDl=Ke=U>K00ri30000000960%nRV%002N<w=J}NBPrJ:x8(GyBo0A-ve}zIv/QJHBPuE.xAe2j00ri300960%nRV[00310aoj!fnDqfVl&Wh!00ri30000000960%nRV$002*}ASxUJA@ZmYaokptaolG-zVy)WASxUJA@ZpZve$rFBo0][009610000000960%nRV>0046u0096100960%nRV)002%#x-I#IwDj:>0096100960%nRV[002{$v/QAEASxUJiSGcW00ri30000000960%nRV)002K&pYJJRaohxw00ri300960%nRV)002{$v/QAEASxUJ0096100000","WASM4_CART_SIZE":65478}</script>
  <script>var wasm4=function(t){"use strict";
/**
   * @license
   * Copyright 2019 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */var e;const s=globalThis,i=s.ShadowRoot&&(void 0===s.ShadyCSS||s.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),r=new WeakMap;let o=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(i&&void 0===t){const s=void 0!==e&&1===e.length;s&&(t=r.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&r.set(e,t))}return t}toString(){return this.cssText}};const a=(t,...e)=>{const s=1===t.length?t[0]:e.reduce(((e,s,i)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[i+1]),t[0]);return new o(s,t,n)},h=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return(t=>new o("string"==typeof t?t:t+"",void 0,n))(e)})(t):t
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */,{is:l,defineProperty:c,getOwnPropertyDescriptor:d,getOwnPropertyNames:u,getOwnPropertySymbols:p,getPrototypeOf:f}=Object,m=globalThis,y=m.trustedTypes,w=y?y.emptyScript:"",g=m.reactiveElementPolyfillSupport,b=(t,e)=>t,v={toAttribute(t,e){switch(e){case Boolean:t=t?w:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(i){s=null}}return s}},A=(t,e)=>!l(t,e),x={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:A};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),m.litPropertyMetadata??(m.litPropertyMetadata=new WeakMap);class k extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=x){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(t,s,e);void 0!==i&&c(this.prototype,t,i)}}static getPropertyDescriptor(t,e,s){const{get:i,set:n}=d(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return null==i?void 0:i.call(this)},set(e){const r=null==i?void 0:i.call(this);n.call(this,e),this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??x}static _$Ei(){if(this.hasOwnProperty(b("elementProperties")))return;const t=f(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(b("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(b("properties"))){const t=this.properties,e=[...u(t),...p(t)];for(const s of e)this.createProperty(s,t[s])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,s]of e)this.elementProperties.set(t,s)}this._$Eh=new Map;for(const[e,s]of this.elementProperties){const t=this._$Eu(e,s);void 0!==t&&this._$Eh.set(t,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const t of s)e.unshift(h(t))}else void 0!==t&&e.push(h(t));return e}static _$Eu(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),null==(t=this.constructor.l)||t.forEach((t=>t(this)))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),void 0!==this.renderRoot&&this.isConnected&&(null==(e=t.hostConnected)||e.call(t))}removeController(t){var e;null==(e=this._$EO)||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((t,e)=>{if(i)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of e){const e=document.createElement("style"),n=s.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}})(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null==(t=this._$EO)||t.forEach((t=>{var e;return null==(e=t.hostConnected)?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null==(t=this._$EO)||t.forEach((t=>{var e;return null==(e=t.hostDisconnected)?void 0:e.call(t)}))}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EC(t,e){var s;const i=this.constructor.elementProperties.get(t),n=this.constructor._$Eu(t,i);if(void 0!==n&&!0===i.reflect){const r=(void 0!==(null==(s=i.converter)?void 0:s.toAttribute)?i.converter:v).toAttribute(e,i.type);this._$Em=t,null==r?this.removeAttribute(n):this.setAttribute(n,r),this._$Em=null}}_$AK(t,e){var s;const i=this.constructor,n=i._$Eh.get(t);if(void 0!==n&&this._$Em!==n){const t=i.getPropertyOptions(n),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null==(s=t.converter)?void 0:s.fromAttribute)?t.converter:v;this._$Em=n,this[n]=r.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,s){if(void 0!==t){if(s??(s=this.constructor.getPropertyOptions(t)),!(s.hasChanged??A)(this[t],e))return;this.P(t,e,s)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),!0===s.reflect&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,s]of t)!0!==s.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],s)}let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),null==(t=this._$EO)||t.forEach((t=>{var e;return null==(e=t.hostUpdate)?void 0:e.call(t)})),this.update(s)):this._$EU()}catch(i){throw e=!1,this._$EU(),i}e&&this._$AE(s)}willUpdate(t){}_$AE(t){var e;null==(e=this._$EO)||e.forEach((t=>{var e;return null==(e=t.hostUpdated)?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach((t=>this._$EC(t,this[t])))),this._$EU()}updated(t){}firstUpdated(t){}}k.elementStyles=[],k.shadowRootOptions={mode:"open"},k[b("elementProperties")]=new Map,k[b("finalized")]=new Map,null==g||g({ReactiveElement:k}),(m.reactiveElementVersions??(m.reactiveElementVersions=[])).push("2.0.4");
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */
const S=globalThis,E=S.trustedTypes,$=E?E.createPolicy("lit-html",{createHTML:t=>t}):void 0,_="$lit$",P=`lit$${(Math.random()+"").slice(9)}$`,C="?"+P,I=`<${C}>`,U=document,T=()=>U.createComment(""),M=t=>null===t||"object"!=typeof t&&"function"!=typeof t,L=Array.isArray,O="[ \t\n\f\r]",R=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,N=/-->/g,B=/>/g,D=RegExp(`>|${O}(?:([^\\s"'>=/]+)(${O}*=${O}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),F=/'/g,H=/"/g,z=/^(?:script|style|textarea|title)$/i,j=(q=1,(t,...e)=>({_$litType$:q,strings:t,values:e})),V=Symbol.for("lit-noChange"),G=Symbol.for("lit-nothing"),W=new WeakMap,K=U.createTreeWalker(U,129);var q;function Y(t,e){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==$?$.createHTML(e):e}class J{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let n=0,r=0;const o=t.length-1,a=this.parts,[h,l]=((t,e)=>{const s=t.length-1,i=[];let n,r=2===e?"<svg>":"",o=R;for(let a=0;a<s;a++){const e=t[a];let s,h,l=-1,c=0;for(;c<e.length&&(o.lastIndex=c,h=o.exec(e),null!==h);)c=o.lastIndex,o===R?"!--"===h[1]?o=N:void 0!==h[1]?o=B:void 0!==h[2]?(z.test(h[2])&&(n=RegExp("<\u002F"+h[2],"g")),o=D):void 0!==h[3]&&(o=D):o===D?">"===h[0]?(o=n??R,l=-1):void 0===h[1]?l=-2:(l=o.lastIndex-h[2].length,s=h[1],o=void 0===h[3]?D:'"'===h[3]?H:F):o===H||o===F?o=D:o===N||o===B?o=R:(o=D,n=void 0);const d=o===D&&t[a+1].startsWith("/>")?" ":"";r+=o===R?e+I:l>=0?(i.push(s),e.slice(0,l)+_+e.slice(l)+P+d):e+P+(-2===l?a:d)}return[Y(t,r+(t[s]||"<?>")+(2===e?"<\u002Fsvg>":"")),i]})(t,e);if(this.el=J.createElement(h,s),K.currentNode=this.el.content,2===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(i=K.nextNode())&&a.length<o;){if(1===i.nodeType){if(i.hasAttributes())for(const t of i.getAttributeNames())if(t.endsWith(_)){const e=l[r++],s=i.getAttribute(t).split(P),o=/([.?@])?(.*)/.exec(e);a.push({type:1,index:n,name:o[2],strings:s,ctor:"."===o[1]?et:"?"===o[1]?st:"@"===o[1]?it:tt}),i.removeAttribute(t)}else t.startsWith(P)&&(a.push({type:6,index:n}),i.removeAttribute(t));if(z.test(i.tagName)){const t=i.textContent.split(P),e=t.length-1;if(e>0){i.textContent=E?E.emptyScript:"";for(let s=0;s<e;s++)i.append(t[s],T()),K.nextNode(),a.push({type:2,index:++n});i.append(t[e],T())}}}else if(8===i.nodeType)if(i.data===C)a.push({type:2,index:n});else{let t=-1;for(;-1!==(t=i.data.indexOf(P,t+1));)a.push({type:7,index:n}),t+=P.length-1}n++}}static createElement(t,e){const s=U.createElement("template");return s.innerHTML=t,s}}function X(t,e,s=t,i){var n,r;if(e===V)return e;let o=void 0!==i?null==(n=s._$Co)?void 0:n[i]:s._$Cl;const a=M(e)?void 0:e._$litDirective$;return(null==o?void 0:o.constructor)!==a&&(null==(r=null==o?void 0:o._$AO)||r.call(o,!1),void 0===a?o=void 0:(o=new a(t),o._$AT(t,s,i)),void 0!==i?(s._$Co??(s._$Co=[]))[i]=o:s._$Cl=o),void 0!==o&&(e=X(t,o._$AS(t,e.values),o,i)),e}class Z{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:s}=this._$AD,i=((null==t?void 0:t.creationScope)??U).importNode(e,!0);K.currentNode=i;let n=K.nextNode(),r=0,o=0,a=s[0];for(;void 0!==a;){if(r===a.index){let e;2===a.type?e=new Q(n,n.nextSibling,this,t):1===a.type?e=new a.ctor(n,a.name,a.strings,this,t):6===a.type&&(e=new nt(n,this,t)),this._$AV.push(e),a=s[++o]}r!==(null==a?void 0:a.index)&&(n=K.nextNode(),r++)}return K.currentNode=U,i}p(t){let e=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}class Q{get _$AU(){var t;return(null==(t=this._$AM)?void 0:t._$AU)??this._$Cv}constructor(t,e,s,i){this.type=2,this._$AH=G,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=s,this.options=i,this._$Cv=(null==i?void 0:i.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===(null==t?void 0:t.nodeType)&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=X(this,t,e),M(t)?t===G||null==t||""===t?(this._$AH!==G&&this._$AR(),this._$AH=G):t!==this._$AH&&t!==V&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>L(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this._(t)}S(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.S(t))}_(t){this._$AH!==G&&M(this._$AH)?this._$AA.nextSibling.data=t:this.T(U.createTextNode(t)),this._$AH=t}$(t){var e;const{values:s,_$litType$:i}=t,n="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=J.createElement(Y(i.h,i.h[0]),this.options)),i);if((null==(e=this._$AH)?void 0:e._$AD)===n)this._$AH.p(s);else{const t=new Z(n,this),e=t.u(this.options);t.p(s),this.T(e),this._$AH=t}}_$AC(t){let e=W.get(t.strings);return void 0===e&&W.set(t.strings,e=new J(t)),e}k(t){L(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,i=0;for(const n of t)i===e.length?e.push(s=new Q(this.S(T()),this.S(T()),this,this.options)):s=e[i],s._$AI(n),i++;i<e.length&&(this._$AR(s&&s._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var s;for(null==(s=this._$AP)||s.call(this,!1,!0,e);t&&t!==this._$AB;){const e=t.nextSibling;t.remove(),t=e}}setConnected(t){var e;void 0===this._$AM&&(this._$Cv=t,null==(e=this._$AP)||e.call(this,t))}}class tt{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,s,i,n){this.type=1,this._$AH=G,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=n,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=G}_$AI(t,e=this,s,i){const n=this.strings;let r=!1;if(void 0===n)t=X(this,t,e,0),r=!M(t)||t!==this._$AH&&t!==V,r&&(this._$AH=t);else{const i=t;let o,a;for(t=n[0],o=0;o<n.length-1;o++)a=X(this,i[s+o],e,o),a===V&&(a=this._$AH[o]),r||(r=!M(a)||a!==this._$AH[o]),a===G?t=G:t!==G&&(t+=(a??"")+n[o+1]),this._$AH[o]=a}r&&!i&&this.j(t)}j(t){t===G?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class et extends tt{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===G?void 0:t}}class st extends tt{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==G)}}class it extends tt{constructor(t,e,s,i,n){super(t,e,s,i,n),this.type=5}_$AI(t,e=this){if((t=X(this,t,e,0)??G)===V)return;const s=this._$AH,i=t===G&&s!==G||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,n=t!==G&&(s===G||i);i&&this.element.removeEventListener(this.name,this,s),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e;"function"==typeof this._$AH?this._$AH.call((null==(e=this.options)?void 0:e.host)??this.element,t):this._$AH.handleEvent(t)}}class nt{constructor(t,e,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){X(this,t)}}const rt=S.litHtmlPolyfillSupport;null==rt||rt(J,Q),(S.litHtmlVersions??(S.litHtmlVersions=[])).push("3.1.2");
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */
class ot extends k{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t;const e=super.createRenderRoot();return(t=this.renderOptions).renderBefore??(t.renderBefore=e.firstChild),e}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,e,s)=>{const i=(null==s?void 0:s.renderBefore)??e;let n=i._$litPart$;if(void 0===n){const t=(null==s?void 0:s.renderBefore)??null;i._$litPart$=n=new Q(e.insertBefore(T(),t),t,void 0,s??{})}return n._$AI(t),n})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null==(t=this._$Do)||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null==(t=this._$Do)||t.setConnected(!1)}render(){return V}}ot._$litElement$=!0,ot.finalized=!0,null==(e=globalThis.litElementHydrateSupport)||e.call(globalThis,{LitElement:ot});const at=globalThis.litElementPolyfillSupport;null==at||at({LitElement:ot}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.0.4");
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */
const ht=t=>(e,s)=>{void 0!==s?s.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)}
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */,lt={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:A},ct=(t=lt,e,s)=>{const{kind:i,metadata:n}=s;let r=globalThis.litPropertyMetadata.get(n);if(void 0===r&&globalThis.litPropertyMetadata.set(n,r=new Map),r.set(s.name,t),"accessor"===i){const{name:i}=s;return{set(s){const n=e.get.call(this);e.set.call(this,s),this.requestUpdate(i,n,t)},init(e){return void 0!==e&&this.P(i,void 0,t),e}}}if("setter"===i){const{name:i}=s;return function(s){const n=this[i];e.call(this,s),this.requestUpdate(i,n,t)}}throw Error("Unsupported decorator location: "+i)};
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */
function dt(t){return function(t){return(e,s)=>"object"==typeof s?ct(t,e,s):((t,e,s)=>{const i=e.hasOwnProperty(s);return e.constructor.createProperty(s,i?{...t,wrapped:!0}:t),i?Object.getOwnPropertyDescriptor(e,s):void 0})(t,e,s)}({...t,state:!0,attribute:!1})}
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */const ut=(t,e,s)=>(s.configurable=!0,s.enumerable=!0,Reflect.decorate&&"object"!=typeof e&&Object.defineProperty(t,e,s),s)
/**
   * @license
   * Copyright 2017 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */;function pt(t,e){return(s,i,n)=>{const r=e=>{var s;return(null==(s=e.renderRoot)?void 0:s.querySelector(t))??null};if(e){const{get:t,set:e}="object"==typeof i?s:n??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return ut(s,i,{get(){let s=t.call(this);return void 0===s&&(s=r(this),(null!==s||this.hasUpdated)&&e.call(this,s)),s}})}return ut(s,i,{get(){return r(this)}})}}const ft=160,mt=160,yt=1024,wt=[14743759,8831084,3172432,464929],gt=16,bt=32,vt=64,At=128,xt=Uint8Array.of(255,255,255,255,255,255,255,255,199,199,199,207,207,255,207,255,147,147,147,255,255,255,255,255,147,1,147,147,147,1,147,255,239,131,47,131,233,3,239,255,157,91,55,239,217,181,115,255,143,39,39,143,37,51,129,255,207,207,207,255,255,255,255,255,243,231,207,207,207,231,243,255,159,207,231,231,231,207,159,255,255,147,199,1,199,147,255,255,255,231,231,129,231,231,255,255,255,255,255,255,255,207,207,159,255,255,255,129,255,255,255,255,255,255,255,255,255,207,207,255,253,251,247,239,223,191,127,255,199,179,57,57,57,155,199,255,231,199,231,231,231,231,129,255,131,57,241,195,135,31,1,255,129,243,231,195,249,57,131,255,227,195,147,51,1,243,243,255,3,63,3,249,249,57,131,255,195,159,63,3,57,57,131,255,1,57,243,231,207,207,207,255,135,59,27,135,97,121,131,255,131,57,57,129,249,243,135,255,255,207,207,255,207,207,255,255,255,207,207,255,207,207,159,255,243,231,207,159,207,231,243,255,255,255,1,255,1,255,255,255,159,207,231,243,231,207,159,255,131,1,57,243,199,255,199,255,131,125,69,85,65,127,131,255,199,147,57,57,1,57,57,255,3,57,57,3,57,57,3,255,195,153,63,63,63,153,195,255,7,51,57,57,57,51,7,255,1,63,63,3,63,63,1,255,1,63,63,3,63,63,63,255,193,159,63,49,57,153,193,255,57,57,57,1,57,57,57,255,129,231,231,231,231,231,129,255,249,249,249,249,249,57,131,255,57,51,39,15,7,35,49,255,159,159,159,159,159,159,129,255,57,17,1,1,41,57,57,255,57,25,9,1,33,49,57,255,131,57,57,57,57,57,131,255,3,57,57,57,3,63,63,255,131,57,57,57,33,51,133,255,3,57,57,49,7,35,49,255,135,51,63,131,249,57,131,255,129,231,231,231,231,231,231,255,57,57,57,57,57,57,131,255,57,57,57,17,131,199,239,255,57,57,41,1,1,17,57,255,57,17,131,199,131,17,57,255,153,153,153,195,231,231,231,255,1,241,227,199,143,31,1,255,195,207,207,207,207,207,195,255,127,191,223,239,247,251,253,255,135,231,231,231,231,231,135,255,199,147,255,255,255,255,255,255,255,255,255,255,255,255,255,1,239,247,255,255,255,255,255,255,255,255,131,249,129,57,129,255,63,63,3,57,57,57,131,255,255,255,129,63,63,63,129,255,249,249,129,57,57,57,129,255,255,255,131,57,1,63,131,255,241,231,129,231,231,231,231,255,255,255,129,57,57,129,249,131,63,63,3,57,57,57,57,255,231,255,199,231,231,231,129,255,243,255,227,243,243,243,243,135,63,63,49,3,7,35,49,255,199,231,231,231,231,231,129,255,255,255,3,73,73,73,73,255,255,255,3,57,57,57,57,255,255,255,131,57,57,57,131,255,255,255,3,57,57,3,63,63,255,255,129,57,57,129,249,249,255,255,145,143,159,159,159,255,255,255,131,63,131,249,3,255,231,231,129,231,231,231,231,255,255,255,57,57,57,57,129,255,255,255,153,153,153,195,231,255,255,255,73,73,73,73,129,255,255,255,57,1,199,1,57,255,255,255,57,57,57,129,249,131,255,255,1,227,199,143,1,255,243,231,231,207,231,231,243,255,231,231,231,231,231,231,231,255,159,207,207,231,207,207,159,255,255,255,143,69,227,255,255,255,255,255,255,255,255,147,147,255,131,41,41,17,41,41,131,255,131,57,9,17,33,57,131,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,131,17,33,125,33,17,131,255,131,17,9,125,9,17,131,255,131,17,57,85,17,17,131,255,131,17,17,85,57,17,131,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,231,255,231,231,199,199,199,255,239,131,41,47,41,131,239,255,195,153,159,3,159,159,1,255,255,165,219,219,219,165,255,255,153,153,195,129,231,129,231,255,231,231,231,255,231,231,231,255,195,153,135,219,225,153,195,255,147,255,255,255,255,255,255,255,195,189,102,94,94,102,189,195,135,195,147,195,255,255,255,255,255,201,147,39,147,201,255,255,255,255,129,249,249,255,255,255,255,255,255,255,255,255,255,255,195,189,70,90,70,90,189,195,131,255,255,255,255,255,255,255,239,215,239,255,255,255,255,255,231,231,129,231,231,255,129,255,199,243,231,195,255,255,255,255,195,231,243,199,255,255,255,255,247,239,255,255,255,255,255,255,255,255,51,51,51,51,9,63,193,149,181,149,193,245,245,255,255,255,255,207,207,255,255,255,255,255,255,255,255,255,247,207,231,199,231,195,255,255,255,255,199,147,147,199,255,255,255,255,255,39,147,201,147,39,255,255,189,59,183,173,217,177,125,255,189,59,183,169,221,187,113,255,29,187,215,45,217,177,125,255,199,255,199,159,57,1,131,255,223,239,199,147,57,1,57,255,247,239,199,147,57,1,57,255,199,147,199,147,57,1,57,255,203,167,199,147,57,1,57,255,147,255,199,147,57,1,57,255,239,215,199,147,57,1,57,255,193,135,39,33,7,39,33,255,195,153,63,63,153,195,247,207,223,239,1,63,3,63,1,255,247,239,1,63,3,63,1,255,199,147,1,63,3,63,1,255,147,255,1,63,3,63,1,255,239,247,129,231,231,231,129,255,247,239,129,231,231,231,129,255,231,195,129,231,231,231,129,255,153,255,129,231,231,231,129,255,135,147,153,9,153,147,135,255,203,167,25,9,1,33,49,255,223,239,131,57,57,57,131,255,247,239,131,57,57,57,131,255,199,147,131,57,57,57,131,255,203,167,131,57,57,57,131,255,147,255,131,57,57,57,131,255,255,187,215,239,215,187,255,255,131,57,49,41,25,57,131,255,223,239,57,57,57,57,131,255,247,239,57,57,57,57,131,255,199,147,255,57,57,57,131,255,147,255,57,57,57,57,131,255,247,239,153,153,195,231,231,255,63,3,57,57,57,3,63,255,195,153,153,147,153,137,147,255,223,239,131,249,129,57,129,255,247,239,131,249,129,57,129,255,199,147,131,249,129,57,129,255,203,167,131,249,129,57,129,255,147,255,131,249,129,57,129,255,239,215,131,249,129,57,129,255,255,255,131,233,129,47,131,255,255,255,129,63,63,129,247,207,223,239,131,57,1,63,131,255,247,239,131,57,1,63,131,255,199,147,131,57,1,63,131,255,147,255,131,57,1,63,131,255,223,239,255,199,231,231,129,255,247,239,255,199,231,231,129,255,199,147,255,199,231,231,129,255,147,255,199,231,231,231,129,255,155,135,103,131,57,57,131,255,203,167,3,57,57,57,57,255,223,239,131,57,57,57,131,255,247,239,131,57,57,57,131,255,199,147,131,57,57,57,131,255,203,167,131,57,57,57,131,255,147,255,131,57,57,57,131,255,255,231,255,129,255,231,255,255,255,255,131,49,41,25,131,255,223,239,57,57,57,57,129,255,247,239,57,57,57,57,129,255,199,147,255,57,57,57,129,255,147,255,57,57,57,57,129,255,247,239,57,57,57,129,249,131,63,63,3,57,57,3,63,63,147,255,57,57,57,129,249,131);function kt(t){const e=new URL(location.href),s=e.searchParams.get(t);if(null!=s)return s;return new URL(e.hash.substring(1),"https://x").searchParams.get(t)}function St(){if(null==document.fullscreenElement){let t=function(){const t=window.frameElement;t&&(t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.zIndex="99999",t.style.width="100%",t.style.height="100%")};const e=document.body.requestFullscreen&&document.body.requestFullscreen({navigationUI:"hide"});e?e.catch(t):t()}}const Et="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#".split(""),$t=[0,68,0,84,83,82,72,0,75,76,70,65,0,63,62,69,0,1,2,3,4,5,6,7,8,9,64,0,73,66,74,71,81,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,77,0,78,67,0,0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,79,0,80,0,0];function _t(t){const e=t.length,s=e%4,i=s?e+4-s:e;let n="",r=0,o=0;for(;r<i;){const s=r<e?t[r]:0;if(++r,o=256*o+s,r%4==0){let t=52200625;for(;t>=1;){const e=Math.floor(o/t)%85;n+=Et[e],t/=85}o=0}}return n}function Pt(t,e){let s=0,i=0,n=0;const r=t.length,o=e.length;if(t.length%5==0)for(;i<r;){const r=t.charCodeAt(i++)-32;if(r<0||r>=$t.length)return s;if(n=85*n+$t[r],i%5==0){let t=16777216;for(;t>=1;){if(s>=o)return s;e[s++]=n/t%256,t/=256}n=0}}return s}class Ct{constructor(){this.memory=new ArrayBuffer(65536),this.diskBuffer=new ArrayBuffer(yt),this.diskSize=0}read(t){new Uint8Array(this.memory).set(new Uint8Array(t.memory.buffer)),this.diskSize=t.diskSize,new Uint8Array(this.diskBuffer).set(new Uint8Array(t.diskBuffer,0,t.diskSize))}write(t){new Uint8Array(t.memory.buffer).set(new Uint8Array(this.memory)),t.diskSize=this.diskSize,new Uint8Array(t.diskBuffer).set(new Uint8Array(this.diskBuffer,0,this.diskSize))}toBytes(t){t||(t=new Uint8Array(65540+this.diskSize)),t.set(new Uint8Array(this.memory),0);return new DataView(t.buffer,t.byteOffset,t.byteLength).setUint32(65536,this.diskSize),t.set(new Uint8Array(this.diskBuffer,0,this.diskSize),65540),t}fromBytes(t){new Uint8Array(this.memory).set(t.subarray(0,65536));const e=new DataView(t.buffer,t.byteOffset,t.byteLength);this.diskSize=e.getUint32(65536);new Uint8Array(this.diskBuffer).set(t.subarray(65540,65540+this.diskSize))}}const It=20;class Ut{constructor(){this.frame=-1,this.state=new Ct,this.inputs=new Array(4),this.predicted=new Array(4);for(let t=0;t<4;++t)this.inputs[t]=0,this.predicted[t]=!0}}class Tt{constructor(){this.futureInputs=new Map}}class Mt{constructor(t,e){this.currentFrame=t,this.runtime=e,this.rollbackIdx=It,this.history=new Array(It);for(let s=0;s<It;++s)this.history[s]=new Ut;this.players=new Array(4);for(let s=0;s<4;++s)this.players[s]=new Tt}addInputs(t,e,s){const i=this.players[t];for(const n of s){if(e>=this.currentFrame)i.futureInputs.has(e)||i.futureInputs.set(e,n);else for(let s=0,i=It;s<i;++s){const i=this.history[s];if(i.frame==e){i.predicted[t]&&(i.predicted[t]=!1,i.inputs[t]!=n&&(i.inputs[t]=n,this.rollbackIdx=Math.min(s,this.rollbackIdx)));break}}++e}}update(){if(this.rollbackIdx<It){for(let e=this.rollbackIdx+1;e<It;++e){const t=this.history[e];for(let s=0;s<4;++s)if(t.predicted[s]){const i=this.history[e-1];t.inputs[s]=i.inputs[s]}}let t=!0;for(;this.rollbackIdx<It;){const e=this.history[this.rollbackIdx++];t?(t=!1,e.state.write(this.runtime)):e.state.read(this.runtime);for(let t=0;t<4;++t)this.runtime.setGamepad(t,e.inputs[t]);this.runtime.update()}}const t=this.history[19],e=this.history.shift();this.history.push(e),e.frame=this.currentFrame,e.state.read(this.runtime);for(let s=0;s<4;++s){const i=this.players[s];let n=i.futureInputs.get(this.currentFrame);null!=n?(e.predicted[s]=!1,i.futureInputs.delete(this.currentFrame)):(e.predicted[s]=!0,n=t.inputs[s]),e.inputs[s]=n,this.runtime.setGamepad(s,n)}this.runtime.update(),++this.currentFrame}}class Lt{constructor(t){this.onMessage=t,this.bufferedOutput=[],this.connect(),this.keepaliveInterval=window.setInterval((()=>{this.send("",{type:"KEEPALIVE"},!1)}),15e3)}async connect(){const t=["wss://webrtc-signal-server.wasm4.org","wss://ywc2h85cv1.execute-api.us-east-1.amazonaws.com/production","wss://webrtc-signal-server.wasm4.jwq.moe","wss://iyuavuru2h.execute-api.eu-central-1.amazonaws.com/production"];for(const s of t)try{this.socket=await new Promise(((t,e)=>{const i=new WebSocket(s);i.addEventListener("open",(()=>{t(i)})),i.addEventListener("error",(()=>{e()}))}));break}catch(e){console.error(e)}if(!this.socket)throw new Error("Unable to connect to signal server");this.socket.addEventListener("message",(t=>{const{source:e,message:s}=JSON.parse(t.data);this.onMessage(e,s)}));for(const s of this.bufferedOutput)this.socket.send(s);this.bufferedOutput.length=0}send(t,e,s=!0){var i;const n=JSON.stringify({target:t,message:e});1==(null==(i=this.socket)?void 0:i.readyState)?this.socket.send(n):s&&this.bufferedOutput.push(n)}close(){var t;null==(t=this.socket)||t.close(),window.clearInterval(this.keepaliveInterval)}}class Ot{constructor(t){let e;this.connections=new Map,this.localPeerId=new Promise((t=>{e=t})),this.signalClient=new Lt((async(s,i)=>{switch(i.type){case"WHOAMI_REPLY":this.iceServers=i.iceServers,e(i.yourPeerId);break;case"OFFER":if(this.connections.has(s))throw new Error("Received offer for a connection we already initiated");{const e=this.createConnection(s);await e.setRemoteDescription(i.description),await e.setLocalDescription(await e.createAnswer()),t(e,s),this.signalClient.send(s,{type:"ANSWER",description:e.localDescription.toJSON()})}break;case"ANSWER":{const t=this.connections.get(s);t&&await t.setRemoteDescription(i.description)}break;case"CANDIDATE":{const t=this.connections.get(s);t&&await t.addIceCandidate(new RTCIceCandidate(i.candidate))}break;case"ABORT":{const t=this.connections.get(s);t&&t.close()}}})),this.signalClient.send("",{type:"WHOAMI_REQUEST"})}createConnection(t){const e=new RTCPeerConnection({iceServers:this.iceServers});return this.connections.set(t,e),e.addEventListener("negotiationneeded",(async()=>{await e.setLocalDescription(await e.createOffer()),this.signalClient.send(t,{type:"OFFER",description:e.localDescription.toJSON()})})),e.addEventListener("icecandidate",(({candidate:e})=>{e&&this.signalClient.send(t,{type:"CANDIDATE",candidate:e.toJSON()})})),e.addEventListener("connectionstatechange",(()=>{const s=e.connectionState;"connected"!=s&&"failed"!=s||this.connections.delete(t)})),e}connect(t){return this.connections.get(t)||this.createConnection(t)}close(){this.signalClient.close();for(const[t,e]of this.connections)e.close()}}const Rt=16384;class Nt{constructor(t){this.chunks=[],this.size=0,t.addEventListener("message",(t=>{if(t.data instanceof ArrayBuffer){const e=new Uint8Array(t.data);this.size+=e.byteLength,this.chunks.push(e)}}))}read(){const t=new Uint8Array(this.size);let e=0;for(const s of this.chunks)t.set(s,e),e+=s.byteLength;return this.chunks.length=0,this.size=0,t}}class Bt{constructor(t){this.channel=t,this.size=0}write(t){this.buffer||(this.buffer=new Uint8Array(Rt));let e=this.size,s=0;for(;s<t.length;){const i=t.subarray(s,s+Rt-e);this.buffer.set(i,e),s+=i.length,e+=i.length,e>=Rt&&(e-=Rt,this.channel.send(this.buffer))}this.size=e}flush(){this.buffer&&this.size>0&&this.channel.send(this.buffer.subarray(0,this.size)),this.buffer=void 0}}class Dt{constructor(t,e=0){this.buffer=t,this.position=e}readBit(){const t=!!(this.buffer[this.position/8>>>0]&1<<(7&this.position));return++this.position,t}readBits(t){let e=0;for(let s=0;s<t;++s)e|=+this.readBit()<<s;return e}}class Ft{constructor(t,e=0){this.buffer=t,this.position=e}write1(){this.buffer[this.position/8>>>0]|=1<<(7&this.position),++this.position}write0(){this.buffer[this.position/8>>>0]&=~(1<<(7&this.position)),++this.position}writeBits(t,e){for(let s=0;s<e;++s)t&1<<s?this.write1():this.write0()}}class Ht{constructor(t=.125){this.discount=t,this.average=0,this.firstUpdate=!0}update(t){if(this.firstUpdate)this.firstUpdate=!1,this.average=t;else{const e=this.discount;this.average=(1-e)*this.average+e*t}}}const zt=8+Math.ceil(82.5),jt=new ArrayBuffer(zt);class Vt{constructor(t,e,s,i){this.peerId=t,this.connection=e,this.reliableChannel=s,this.unreliableChannel=i,this.playerIdx=-1,this.frame=0,this.nextNeededFrame=0,this.outboundFrame=0,this.outboundInputs=[],this.ping=new Ht,this.drift=new Ht,this.chunkReader=new Nt(s),this.chunkWriter=new Bt(s)}addOutboundInput(t,e){if(0==this.outboundFrame&&(this.outboundFrame=t),t<this.outboundFrame){for(let s=this.outboundFrame-t;s>0;--s)this.outboundInputs.unshift(e);this.outboundFrame=t}else{const s=t-this.outboundFrame;if(s>=this.outboundInputs.length){for(let t=this.outboundInputs.length;t<s;++t)this.outboundInputs[t]=t>0?this.outboundInputs[t-1]:0;this.outboundInputs[s]=e}}}sendMessage(t){this.reliableChannel.send(JSON.stringify(t))}sendUnreliableBuffer(t){this.unreliableChannel.send(t)}sendPingRequest(){const t=new DataView(jt);t.setUint8(0,2),t.setUint32(1,performance.now()>>>0),this.sendUnreliableBuffer(new Uint8Array(jt,0,5))}sendPingReply(t){const e=new DataView(jt);e.setUint8(0,3),e.setUint32(1,t),this.sendUnreliableBuffer(new Uint8Array(jt,0,5))}sendTick(t){const e=new DataView(jt);e.setUint8(0,1),e.setUint32(1,t),e.setInt8(5,0==this.nextNeededFrame?-127:this.nextNeededFrame-t),e.setInt8(6,this.outboundFrame-t),e.setUint8(7,this.outboundInputs.length);const s=new Ft(new Uint8Array(jt,8));let i=0;for(const r of this.outboundInputs){const t=i^r;i=r;for(let e=0;e<8;++e)t&1<<e&&(s.write1(),s.writeBits(e,3));s.write0()}const n=8+Math.ceil(s.position/8);this.sendUnreliableBuffer(new Uint8Array(jt,0,n))}close(){this.reliableChannel.close(),this.unreliableChannel.close(),this.connection.close()}}class Gt{constructor(t){this.runtime=t,this.remotePlayers=new Map,this.localPlayerIdx=-1,this.updateCount=0,this.peerMgr=new Ot((async(t,e)=>{const s=Array.from(this.remotePlayers.keys()),i=await this.createRemotePlayer(t,e);i.sendMessage({type:"WELCOME",otherPeers:s}),this.localPlayerIdx>=0&&i.sendMessage({type:"PLAYER_INFO",playerIdx:this.localPlayerIdx})}))}host(){this.runtime.setNetplay(0),this.rollbackMgr=new Mt(1,this.runtime),this.localPlayerIdx=0}join(t){const e=this.peerMgr.connect(t);this.createRemotePlayer(e,t).then((t=>{t.sendMessage({type:"JOIN_REQUEST"})}),(t=>{this.runtime.blueScreen("Failed to connect\nto peer. They may\nbe offline?")}))}async getInviteLink(){const t=await this.peerMgr.localPeerId,e=window.location;if("file:"==e.protocol||"localhost"==e.hostname||"127.0.0.1"==e.hostname||"wasm4.org"==e.hostname)return`https://wasm4.org/netplay/#${t}`;const s=new URL(e.href);return s.searchParams.set("netplay",t),s.href}close(){for(const t of this.remotePlayers.values())t.close();this.peerMgr.close()}async createRemotePlayer(t,e){function s(e){return new Promise(((s,i)=>{const n=t.createDataChannel("WASM-4",e);n.binaryType="arraybuffer",n.onopen=()=>{s(n)},n.onerror=i}))}const[i,n]=await Promise.all([s({negotiated:!0,id:0}),s({negotiated:!0,id:1,ordered:!1,maxRetransmits:0})]),r=new Vt(e,t,i,n);this.remotePlayers.set(e,r);const o=()=>{this.remotePlayers.has(e)&&(this.remotePlayers.delete(e),this.onleave&&r.playerIdx>=0&&this.onleave(r.playerIdx))};return t.addEventListener("connectionstatechange",(()=>{"disconnected"==t.connectionState&&o()})),i.addEventListener("close",o),n.addEventListener("close",o),i.addEventListener("message",(async t=>{if("string"!=typeof t.data)return;const e=JSON.parse(t.data);switch(e.type){case"WELCOME":for(const t of e.otherPeers)if(!this.remotePlayers.has(t)){const e=this.peerMgr.connect(t),s=await this.createRemotePlayer(e,t);this.localPlayerIdx>=0&&s.sendMessage({type:"PLAYER_INFO",playerIdx:this.localPlayerIdx})}break;case"JOIN_REQUEST":{const t=this.nextPlayerIdx();if(t>=4)r.sendMessage({type:"JOIN_REJECT"}),r.close();else{r.playerIdx=t,r.chunkWriter.write(this.runtime.wasmBuffer);const e=new Ct;e.read(this.runtime),r.chunkWriter.write(e.toBytes()),r.chunkWriter.flush(),r.sendMessage({type:"JOIN_REPLY",yourPlayerIdx:r.playerIdx,frame:this.rollbackMgr.currentFrame,stateOffset:this.runtime.wasmBuffer.byteLength}),this.onjoin&&this.onjoin(r.playerIdx)}}break;case"JOIN_REPLY":{this.localPlayerIdx=e.yourPlayerIdx;for(const e of this.remotePlayers.values())e!=r&&e.sendMessage({type:"PLAYER_INFO",playerIdx:this.localPlayerIdx});const t=r.chunkReader.read(),s=t.subarray(0,e.stateOffset),i=t.subarray(e.stateOffset);await this.runtime.load(s,!1);const n=new Ct;n.fromBytes(i),n.write(this.runtime),this.runtime.setNetplay(this.localPlayerIdx),this.rollbackMgr=new Mt(e.frame,this.runtime),this.onstart&&this.onstart(this.localPlayerIdx)}break;case"JOIN_REJECT":this.runtime.blueScreen("Connected, but the\ngame is already\nfull!"),this.close();break;case"PLAYER_INFO":-1==r.playerIdx&&(r.playerIdx=e.playerIdx,this.onjoin&&this.onjoin(r.playerIdx))}})),n.addEventListener("message",(async t=>{const e=t.data,s=new DataView(e);switch(s.getUint8(0)){case 1:if(this.rollbackMgr&&r.playerIdx>=0){const t=s.getUint32(1);if(t>r.frame){const i=s.getInt8(5)+t,n=s.getInt8(6)+t,o=s.getUint8(7),a=new Dt(new Uint8Array(e,8)),h=new Array(o);let l=0;for(let t=0;t<o;++t){for(;a.readBit();){l^=1<<a.readBits(3)}h[t]=l}if(r.frame=t,r.nextNeededFrame=n+h.length,0==r.outboundFrame)r.outboundFrame=i;else if(i>r.outboundFrame){const t=i-r.outboundFrame;r.outboundFrame=i,r.outboundInputs.splice(0,t)}const c=t+.5*r.ping.average*60/1e3,d=this.rollbackMgr.currentFrame-c;r.drift.update(d),this.rollbackMgr.addInputs(r.playerIdx,n,h)}}break;case 2:{const t=s.getUint32(1);r.sendPingReply(t)}break;case 3:{const t=s.getUint32(1),e=(performance.now()>>>0)-t;r.ping.update(e)}}})),r}nextPlayerIdx(){t:for(let t=0;t<4;++t)if(this.localPlayerIdx!=t){for(const e of this.remotePlayers.values())if(e.playerIdx==t)continue t;return t}return-1}update(t){if(!this.rollbackMgr)return!1;const e=0==(7&this.updateCount),s=0==(31&this.updateCount);++this.updateCount;const i=this.rollbackMgr.currentFrame,n=i+2;this.rollbackMgr.addInputs(this.localPlayerIdx,n,[t]);let r=!1;for(const o of this.remotePlayers.values())o.addOutboundInput(n,t),o.sendTick(i),(o.nextNeededFrame<i-It||o.outboundInputs.length>=20)&&(r=!0),s&&o.sendPingRequest();if(e){let t=0;for(const e of this.remotePlayers.values())t=Math.max(e.drift.average,t);t>=1&&(r=!0)}return r||this.rollbackMgr.update(),!r}getSummary(){const t=[{playerIdx:this.localPlayerIdx,ping:-1}];for(const e of this.remotePlayers.values())t.push({playerIdx:e.playerIdx,ping:e.ping.average});return t.sort(((t,e)=>t.playerIdx-e.playerIdx)),t}}const Wt='"use strict";(()=>{var M=Math.floor(44.1),b=class{constructor(){this.freq1=0;this.freq2=0;this.startTime=0;this.attackTime=0;this.decayTime=0;this.sustainTime=0;this.releaseTime=0;this.endTick=0;this.sustainVolume=0;this.peakVolume=0;this.phase=0;this.pan=0;this.pulseDutyCycle=0;this.noiseSeed=1;this.noiseLastRandom=0}};function L(m,e,s){return m+s*(e-m)}function V(m,e){if(m<e){let s=m/e;return s+s-s*s}else if(m>1-e){let s=(m-(1-e))/e;return 1-(s+s-s*s)}else return 1}function x(m,e){return Math.pow(2,(m-69+e/256)/12)*440}var y=class extends AudioWorkletProcessor{constructor(){super(),this.time=0,this.ticks=0,this.channels=new Array(4);for(let e=0;e<4;++e)this.channels[e]=new b;this.port!=null&&(this.port.onmessage=e=>{e.data==="tick"?this.tick():this.tone(...e.data)})}ramp(e,s,f,u){if(this.time>=u)return s;let a=(this.time-f)/(u-f);return L(e,s,a)}getCurrentFrequency(e){return e.freq2>0?this.ramp(e.freq1,e.freq2,e.startTime,e.releaseTime):e.freq1}getCurrentVolume(e){let s=this.time;return s>=e.sustainTime&&e.releaseTime-e.sustainTime>M?this.ramp(e.sustainVolume,0,e.sustainTime,e.releaseTime):s>=e.decayTime?e.sustainVolume:s>=e.attackTime?this.ramp(e.peakVolume,e.sustainVolume,e.attackTime,e.decayTime):this.ramp(0,e.peakVolume,e.startTime,e.attackTime)}tick(){this.ticks++}tone(e,s,f,u){let a=e&65535,p=e>>16&65535,A=s&255,h=s>>8&255,o=s>>16&255,i=s>>24&255,E=Math.min(f&255,100),l=Math.min(f>>8&255,100),n=u&3,r=u>>2&3,c=u>>4&3,d=u&64,t=this.channels[n];this.time>t.releaseTime&&this.ticks!=t.endTick&&(t.phase=n==2?.25:0),d?(t.freq1=x(a&255,a>>8),t.freq2=p==0?0:x(p&255,p>>8)):(t.freq1=a,t.freq2=p),t.startTime=this.time,t.attackTime=t.startTime+(44100*i/60>>>0),t.decayTime=t.attackTime+(44100*o/60>>>0),t.sustainTime=t.decayTime+(44100*A/60>>>0),t.releaseTime=t.sustainTime+(44100*h/60>>>0),t.endTick=this.ticks+i+o+A+h,t.pan=c;let T=n==2?.25:.15;if(t.sustainVolume=T*E/100,t.peakVolume=l?T*l/100:T,n==0||n==1)switch(r){case 0:t.pulseDutyCycle=.125;break;case 1:case 3:default:t.pulseDutyCycle=.25;break;case 2:t.pulseDutyCycle=.5;break}else n==2&&h==0&&(t.releaseTime+=M)}process(e,[[s,f]],u){for(let a=0,p=s.length;a<p;++a,++this.time){let A=0,h=0;for(let o=0;o<4;++o){let i=this.channels[o];if(this.time<i.releaseTime||this.ticks==i.endTick){let E=this.getCurrentFrequency(i),l=this.getCurrentVolume(i),n;if(o==3){for(i.phase+=E*E/(1e6/44100*44100);i.phase>0;){i.phase--;let r=i.noiseSeed;r^=r>>7,r^=r<<9,r^=r>>13,i.noiseSeed=r,i.noiseLastRandom=((r&1)<<1)-1}n=l*i.noiseLastRandom}else{let r=E/44100,c=i.phase+r;if(c>=1&&c--,i.phase=c,o==2)n=l*(2*Math.abs(2*i.phase-1)-1);else{let d,t,T,k=i.pulseDutyCycle;c<k?(d=c/k,t=r/k,T=l):(d=(c-k)/(1-k),t=r/(1-k),T=-l),n=T*V(d,t)}}i.pan!=1&&(h+=n),i.pan!=2&&(A+=n)}}s[a]=A,f[a]=h}return!0}};registerProcessor("wasm4-apu",y);})();\n';class Kt{constructor(){this.audioCtx=new(window.AudioContext||window.webkitAudioContext)({sampleRate:44100})}async init(){const t=this.audioCtx,e=new Blob([Wt],{type:"application/javascript"}),s=URL.createObjectURL(e);try{await t.audioWorklet.addModule(s);const e=new AudioWorkletNode(t,"wasm4-apu",{outputChannelCount:[2]});this.processorPort=e.port,e.connect(t.destination)}catch(i){let e;console.warn("AudioWorklet loading failed, falling back to slow audio",i);const s=(t,s)=>{e=new s};new Function("registerProcessor","AudioWorkletProcessor",Wt)(s,class{}),this.processor=e;const n=t.createScriptProcessor(1024,0,2);n.onaudioprocess=t=>{const s=t.outputBuffer.getChannelData(0),i=t.outputBuffer.getChannelData(1);e.process(null,[[s,i]],null)},n.connect(t.destination)}}tick(){null!=this.processorPort?this.processorPort.postMessage("tick"):this.processor.tick()}tone(t,e,s,i){null!=this.processorPort?this.processorPort.postMessage([t,e,s,i]):this.processor.tone(t,e,s,i)}unlockAudio(){const t=this.audioCtx;"suspended"==t.state&&t.resume()}pauseAudio(){const t=this.audioCtx;"running"==t.state&&t.suspend()}}class qt{constructor(t){this.bytes=new Uint8Array(t,160,6400),this.drawColors=new Uint16Array(t,20,1)}clear(){this.bytes.fill(0)}drawPoint(t,e,s){const i=ft*s+e>>>2,n=(3&e)<<1,r=3<<n;this.bytes[i]=t<<n|this.bytes[i]&~r}drawPointUnclipped(t,e,s){e>=0&&e<ft&&s>=0&&s<mt&&this.drawPoint(t,e,s)}drawHLineFast(t,e,s,i){const n=i-(3&i),r=Math.min(e+3&-4,n);if(n-r>3){for(let n=e;n<r;n++)this.drawPoint(t,n,s);const i=ft*s+r>>>2,o=ft*s+n>>>2,a=85*t;this.bytes.fill(a,i,o),e=n}for(let o=e;o<i;o++)this.drawPoint(t,o,s)}drawHLineUnclipped(t,e,s,i){s>=0&&s<mt&&(e<0&&(e=0),i>ft&&(i=ft),e<i&&this.drawHLineFast(t,e,s,i))}drawHLine(t,e,s){const i=15&this.drawColors[0];if(0==i)return;const n=i-1&3;this.drawHLineUnclipped(n,t,e,t+s)}drawVLine(t,e,s){if(e+s<=0||t<0||t>=ft)return;const i=15&this.drawColors[0];if(0==i)return;const n=Math.max(0,e),r=Math.min(mt,e+s),o=i-1&3;for(let a=n;a<r;a++)this.drawPoint(o,t,a)}drawRect(t,e,s,i){const n=Math.max(0,t),r=Math.max(0,e),o=t+s,a=e+i,h=Math.min(o,ft),l=Math.min(a,mt),c=this.drawColors[0],d=15&c,u=c>>>4&15;if(0!==d){const t=d-1&3;for(let e=r;e<l;++e)this.drawHLineFast(t,n,e,h)}if(0!==u){const s=u-1&3;if(t>=0&&t<ft)for(let e=r;e<l;++e)this.drawPoint(s,t,e);if(o>0&&o<=ft)for(let t=r;t<l;++t)this.drawPoint(s,o-1,t);e>=0&&e<mt&&this.drawHLineFast(s,n,e,h),a>0&&a<=mt&&this.drawHLineFast(s,n,a-1,h)}}drawOval(t,e,s,i){const n=this.drawColors[0],r=15&n,o=n>>>4&15;if(15===o)return;const a=o-1&3,h=r-1&3;let l=s-1;const c=i-1;let d=c%2,u=e+Math.floor(i/2),p=t,f=t+s-1,m=u-d;const y=l*l,w=c*c;let g=4*(1-l)*w,b=4*(d+1)*y,v=g+b+d*y;l=8*y,d=8*w;do{this.drawPointUnclipped(a,f,u),this.drawPointUnclipped(a,p,u),this.drawPointUnclipped(a,p,m),this.drawPointUnclipped(a,f,m);const t=p+1;0!==r&&f-t>0&&(this.drawHLineUnclipped(h,t,u,f),this.drawHLineUnclipped(h,t,m,f));const e=2*v;e<=b&&(u+=1,m-=1,b+=l,v+=b),(e>=g||e>b)&&(p+=1,f-=1,g+=d,v+=g)}while(p<=f);for(;u-m<i;)this.drawPointUnclipped(a,p-1,u),this.drawPointUnclipped(a,f+1,u),u+=1,this.drawPointUnclipped(a,p-1,m),this.drawPointUnclipped(a,f+1,m),m-=1}drawLine(t,e,s,i){const n=15&this.drawColors[0];if(0===n)return;const r=n-1&3;if(e>i){let n=t;t=s,s=n,n=e,e=i,i=n}const o=Math.abs(s-t),a=t<s?1:-1,h=i-e;let l,c=(o>h?o:-h)/2;for(;this.drawPointUnclipped(r,t,e),t!==s||e!==i;)l=c,l>-o&&(c-=h,t+=a),l<h&&(c+=o,e++)}drawText(t,e,s){let i=e;for(let n=0,r=t.length;n<r;++n){const r=t[n];if(0===r)return;10===r?(s+=8,i=e):r>=32&&r<=255?(this.blit(xt,i,s,8,8,0,r-32<<3,8),i+=8):i+=8}}blit(t,e,s,i,n,r,o,a,h=!1,l=!1,c=!1,d=!1){const u=this.drawColors[0];let p,f,m,y;d?(l=!l,p=Math.max(0,s)-s,f=Math.max(0,e)-e,m=Math.min(i,mt-s),y=Math.min(n,ft-e)):(p=Math.max(0,e)-e,f=Math.max(0,s)-s,m=Math.min(i,ft-e),y=Math.min(n,mt-s));for(let w=f;w<y;w++)for(let f=p;f<m;f++){const p=e+(d?w:f),m=s+(d?f:w);let y;const g=(o+(c?n-w-1:w))*a+(r+(l?i-f-1:f));if(h){y=t[g>>>2]>>>6-((3&g)<<1)&3}else{y=t[g>>>3]>>>7-(7&g)&1}const b=u>>>(y<<2)&15;0!==b&&this.drawPoint(b-1&3,p,m)}}}const Yt=6409,Jt=3553;class Xt{constructor(t){this.gl=t,this.colorBuffer=new Uint32Array(6400),this.paletteBuffer=new Float32Array(12),this.lastPalette=Array(4),this.paletteLocation=null;const e=new Uint32Array(256);for(let i=0;i<256;++i){const t=i>>6&3,s=i>>4&3,n=i>>2&3,r=3&i;e[i]=t<<30|s<<22|n<<14|r<<6}this.table=e;const s=t.canvas;s.addEventListener("webglcontextlost",(t=>{t.preventDefault()})),s.addEventListener("webglcontextrestored",(()=>{this.initGL()})),this.initGL()}initGL(){const t=this.gl;function e(e,s){const i=t.createShader(e);if(t.shaderSource(i,s),t.compileShader(i),!t.getShaderParameter(i,35713))throw new Error(t.getShaderInfoLog(i)+"");return i}this.lastPalette=Array(4);const s=e(35633,"\n            attribute vec2 pos;\n            varying vec2 framebufferCoord;\n\n            void main () {\n                framebufferCoord = pos*vec2(0.5, -0.5) + 0.5;\n                gl_Position = vec4(pos, 0, 1);\n            }\n        "),i=e(35632,`\n            precision mediump float;\n            uniform vec3 palette[4];\n            uniform sampler2D framebuffer;\n            varying vec2 framebufferCoord;\n\n            vec3 lookup(float index) {\n                vec3 p = palette[0];\n                ${Array.from({length:3},((t,e)=>`p = mix(p, palette[${e+1}],  step(${((e+1)/4).toFixed(2)}, index));`)).join("\n")}\n                return p;\n            }\n\n            void main () {\n                gl_FragColor = vec4(lookup(texture2D(framebuffer, framebufferCoord).r), 1.);\n            }\n        `),n=t.createProgram();if(t.attachShader(n,s),t.attachShader(n,i),t.linkProgram(n),!t.getProgramParameter(n,35714))throw new Error(t.getProgramInfoLog(n)+"");t.useProgram(n),this.paletteLocation=t.getUniformLocation(n,"palette"),t.uniform1i(t.getUniformLocation(n,"framebuffer"),0),t.detachShader(n,s),t.deleteShader(s),t.detachShader(n,i),t.deleteShader(i),function(e){const s=t.createTexture();t.activeTexture(e),t.bindTexture(Jt,s),t.texParameteri(Jt,10242,33071),t.texParameteri(Jt,10243,33071),t.texParameteri(Jt,10240,9728),t.texParameteri(Jt,10241,9728)}(33984),t.texImage2D(Jt,0,Yt,ft,mt,0,Yt,5121,null);const r=t.getAttribLocation(n,"pos"),o=t.createBuffer(),a=new Float32Array([-1,-1,-1,1,1,1,1,1,1,-1,-1,-1]);t.bindBuffer(34962,o),t.bufferData(34962,a,35044),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,5126,!1,0,0)}composite(t,e){const s=this.gl,i=e.bytes,n=this.colorBuffer,r=this.table,o=this.lastPalette,a=this.paletteBuffer;let h=!1;for(let l=0,c=0;l<4;++l){const e=t[l];h=h||o[l]!==e,a[c++]=(e>>16&255)/255,a[c++]=(e>>8&255)/255,a[c++]=(255&e)/255,o[l]=e}h&&s.uniform3fv(this.paletteLocation,this.paletteBuffer);for(let l=0;l<6400;++l)n[l]=r[i[l]];s.texImage2D(Jt,0,Yt,ft,mt,0,Yt,5121,new Uint8Array(n.buffer)),s.drawArrays(4,0,6)}}class Zt{constructor(t){this.wasmBuffer=null,this.wasm=null,this.warnedFileSize=!1;const e=document.createElement("canvas");e.width=ft,e.height=mt,this.canvas=e;const s=e.getContext("webgl",{alpha:!1,depth:!1,antialias:!1});if(!s)throw new Error("web-runtime: could not create wegl context");let i;this.compositor=new Xt(s),this.apu=new Kt,this.diskName=t,this.diskBuffer=new ArrayBuffer(yt);try{i=localStorage.getItem(t)}catch(n){console.error("Error reading disk",n)}this.diskSize=null!=i?Pt(i,new Uint8Array(this.diskBuffer)):0,this.memory=new WebAssembly.Memory({initial:1,maximum:1}),this.data=new DataView(this.memory.buffer),this.framebuffer=new qt(this.memory.buffer),this.reset(),this.pauseState=0,this.wasmBufferByteLen=0}async init(){await this.apu.init()}setMouse(t,e,s){this.data.setInt16(26,t,!0),this.data.setInt16(28,e,!0),this.data.setUint8(30,s)}setGamepad(t,e){this.data.setUint8(22+t,e)}setNetplay(t){this.data.setUint8(32,4|3&t)}getSystemFlag(t){return this.data.getUint8(31)&t}unlockAudio(){this.apu.unlockAudio()}pauseAudio(){this.apu.pauseAudio()}reset(t){const e=new Uint32Array(this.memory.buffer);t&&e.fill(0),this.pauseState&=-2,e.set(wt,1),this.data.setUint16(20,4611,!0),this.data.setInt16(26,32767,!0),this.data.setInt16(28,32767,!0)}async load(t,e=!0){if(this.wasmBuffer=t,this.wasmBufferByteLen=t.byteLength,this.wasm=null,t.byteLength>65536&&e)throw new Error("Cart too big!");const s={memory:this.memory,rect:this.framebuffer.drawRect.bind(this.framebuffer),oval:this.framebuffer.drawOval.bind(this.framebuffer),line:this.framebuffer.drawLine.bind(this.framebuffer),hline:this.framebuffer.drawHLine.bind(this.framebuffer),vline:this.framebuffer.drawVLine.bind(this.framebuffer),text:this.text.bind(this),textUtf8:this.textUtf8.bind(this),textUtf16:this.textUtf16.bind(this),blit:this.blit.bind(this),blitSub:this.blitSub.bind(this),tone:this.apu.tone.bind(this.apu),diskr:this.diskr.bind(this),diskw:this.diskw.bind(this),trace:this.trace.bind(this),traceUtf8:this.traceUtf8.bind(this),traceUtf16:this.traceUtf16.bind(this),tracef:this.tracef.bind(this)};await this.bluescreenOnError((async()=>{const e=await WebAssembly.instantiate(t,{env:s});this.wasm=e.instance,"function"==typeof this.wasm.exports._start&&this.wasm.exports._start(),"function"==typeof this.wasm.exports._initialize&&this.wasm.exports._initialize()}))}async bluescreenOnError(t){try{await t()}catch(e){if(e instanceof Error){const t=function(t){if(t instanceof WebAssembly.RuntimeError){let e;return t.message.match(/unreachable/)?e="The cartridge has\nreached a code \nsegment marked as\nunreachable.":t.message.match(/out of bounds/)&&(e="The cartridge has\nattempted a memory\naccess that is\nout of bounds."),e+"\n\n\n\n\nHit R to reboot."}if(t instanceof WebAssembly.LinkError)return"The cartridge has\ntried to import\na missing function.\n\n\n\nSee console for\nmore details.";if(t instanceof WebAssembly.CompileError)return"The cartridge is\ncorrupted.\n\n\n\nSee console for\nmore details.";if(t instanceof Qt)return t.wasm4Message;return"Unknown error.\n\n\n\nSee console for\nmore details."}(e);this.blueScreen(t),this.printToServer(e.stack??"")}throw e}}text(t,e,s){const i=new Uint8Array(this.memory.buffer,t);this.framebuffer.drawText(i,e,s)}textUtf8(t,e,s,i){const n=new Uint8Array(this.memory.buffer,t,e);this.framebuffer.drawText(n,s,i)}textUtf16(t,e,s,i){const n=new Uint16Array(this.memory.buffer,t,e>>1);this.framebuffer.drawText(n,s,i)}blit(t,e,s,i,n,r){this.blitSub(t,e,s,i,n,0,0,i,r)}blitSub(t,e,s,i,n,r,o,a,h){const l=new Uint8Array(this.memory.buffer,t),c=1&h,d=2&h,u=4&h,p=8&h;this.framebuffer.blit(l,e,s,i,n,r,o,a,c,d,u,p)}diskr(t,e){const s=Math.min(e,this.diskSize),i=new Uint8Array(this.diskBuffer,0,s);return new Uint8Array(this.memory.buffer,t).set(i),s}diskw(t,e){const s=Math.min(e,yt),i=new Uint8Array(this.memory.buffer,t,s),n=new Uint8Array(this.diskBuffer),r=_t(i);try{localStorage.setItem(this.diskName,r)}catch(o){console.error("Error writing disk",o)}return n.set(i),this.diskSize=s,s}getCString(t){let e="";for(;;){const s=this.data.getUint8(t++);if(0==s)break;e+=String.fromCharCode(s)}return e}print(t){console.log(t),this.printToServer(t)}printToServer(t){}trace(t){this.print(this.getCString(t))}traceUtf8(t,e){const s=new Uint8Array(this.memory.buffer,t,e),i=(new TextDecoder).decode(s);this.print(i)}traceUtf16(t,e){const s=new Uint8Array(this.memory.buffer,t,e),i=new TextDecoder("utf-16").decode(s);this.print(i)}tracef(t,e){let s,i="";for(;s=this.data.getUint8(t++);)if(37==s)switch(s=this.data.getUint8(t++)){case 37:i+="%";break;case 99:i+=String.fromCharCode(this.data.getInt32(e,!0)),e+=4;break;case 100:case 120:i+=this.data.getInt32(e,!0).toString(100==s?10:16),e+=4;break;case 115:i+=this.getCString(this.data.getUint32(e,!0)),e+=4;break;case 102:i+=this.data.getFloat64(e,!0),e+=8;break;default:i+="%"+String.fromCharCode(s)}else i+=String.fromCharCode(s);this.print(i)}start(){let t=this.wasm.exports.start;"function"==typeof t&&this.bluescreenOnError(t)}update(){if(0!=this.pauseState)return;this.getSystemFlag(1)||this.framebuffer.clear();let t=this.wasm.exports.update;"function"==typeof t&&this.bluescreenOnError(t),this.apu.tick()}blueScreen(t){this.pauseState|=1;const e=t=>[...t].map((t=>t.charCodeAt(0))),s=" WASM-4 ",i=s;new Uint32Array(this.memory.buffer).set([1118702,8831084,11184810,16777215],1),this.data.setUint16(20,4611,!0),this.framebuffer.clear(),this.framebuffer.drawHLine(48,19,64),this.data.setUint16(20,4401,!0),this.framebuffer.drawText(e(i),48,20),this.data.setUint16(20,4611,!0),this.framebuffer.drawText(e(t),9,60),this.composite()}composite(){const t=new Uint32Array(this.memory.buffer,4,4);this.compositor.composite(t,this.framebuffer)}}class Qt extends Error{constructor(t){super(t.replace("\n"," ")),this.name="Wasm4Error",this.wasm4Message=t}}var te=Object.defineProperty,ee=Object.getOwnPropertyDescriptor,se=(t,e,s,i)=>{for(var n,r=i>1?void 0:i?ee(e,s):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(i?n(e,s,r):n(r))||r);return i&&r&&te(e,s,r),r};class ie{constructor(){this.gamepad=[0,0,0,0],this.mouseX=0,this.mouseY=0,this.mouseButtons=0}}
/**
   * @license
   * Copyright 2021 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   */
function*ne(t,e){if(void 0!==t){let s=0;for(const i of t)yield e(i,s++)}}t.App=class extends ot{constructor(){var t;super(),this.hideGamepadOverlay=!1,this.showMenu=!1,this.inputState=new ie,this.gamepadUnavailableWarned=new Set,this.onPointerUp=t=>{"touch"==t.pointerType&&St(),this.runtime.unlockAudio()},this.diskPrefix=(null==(t=document.getElementById("wasm4-disk-prefix"))?void 0:t.textContent)??kt("disk-prefix"),this.runtime=new Zt(`${this.diskPrefix}-disk`),this.init()}async init(){const t=this.runtime;await t.init();const e=t.canvas,s=kt("netplay");s?(this.netplay=this.createNetplay(),this.netplay.join(s)):await t.load(await async function(){const t=document.getElementById("wasm4-cart-json");if(t){const{WASM4_CART:e,WASM4_CART_SIZE:s}=JSON.parse(t.textContent??""),i=new Uint8Array(s);return Pt(e,i),i}{const t=kt("url")??"cart.wasm",e=await fetch(t);if(e.ok)return new Uint8Array(await e.arrayBuffer());throw new Error(`Could not load cart at url: ${t}`)}}());let i={toggleDevtools(){},updateCompleted(...t){}};this.netplay||t.start();let n=null;const r=t=>{if(document.body.style.cursor="",t.isPrimary){const s=e.getBoundingClientRect(),i=this.inputState;i.mouseX=Math.fround(ft*(t.clientX-s.left)/s.width),i.mouseY=Math.fround(mt*(t.clientY-s.top)/s.height),i.mouseButtons=7&t.buttons}};window.addEventListener("pointerdown",r),window.addEventListener("pointerup",r),window.addEventListener("pointermove",r),e.addEventListener("contextmenu",(t=>{t.preventDefault()}));const o={2:this.saveGameState.bind(this),4:this.loadGameState.bind(this),r:this.resetCart.bind(this),R:this.resetCart.bind(this),F8:i.toggleDevtools,F9:function(){t.composite(),e.toBlob((t=>{const e=URL.createObjectURL(t),s=document.createElement("a");s.href=e,s.download="wasm4-screenshot.png",s.click(),URL.revokeObjectURL(e)}))},F10:function(){if(null!=n)return;const t="video/webm",s=e.captureStream();n=new MediaRecorder(s,{mimeType:t,videoBitsPerSecond:25e6});const i=[];n.ondataavailable=t=>{i.push(t.data)},n.onstop=()=>{const e=new Blob(i,{type:t}),s=URL.createObjectURL(e),n=document.createElement("a");n.href=s,n.download="wasm4-animation.webm",n.click(),URL.revokeObjectURL(s)},n.start(),setTimeout((()=>{n&&(n.requestData(),n.stop(),n=null)}),4e3)},F11:St,Enter:this.onMenuButtonPressed.bind(this)},a=e=>{if(e.ctrlKey||e.altKey)return;if(e.srcElement instanceof HTMLElement&&"INPUT"==e.srcElement.tagName)return;const s="keydown"==e.type;if(t.unlockAudio(),document.body.style.cursor="none",s){const t=o[e.key];if(t)return t(),void e.preventDefault()}let i=0,n=0;switch(e.code){case"KeyX":case"KeyV":case"Space":case"Period":n=1;break;case"KeyZ":case"KeyC":case"Comma":n=2;break;case"ArrowUp":n=vt;break;case"ArrowDown":n=At;break;case"ArrowLeft":n=gt;break;case"ArrowRight":n=bt;break;case"KeyA":case"KeyQ":i=1,n=1;break;case"ShiftLeft":case"Tab":i=1,n=2;break;case"KeyE":i=1,n=vt;break;case"KeyD":i=1,n=At;break;case"KeyS":i=1,n=gt;break;case"KeyF":i=1,n=bt;break;case"NumpadMultiply":case"NumpadDecimal":i=2,n=1;break;case"NumpadSubtract":case"NumpadEnter":i=2,n=2;break;case"Numpad8":i=2,n=vt;break;case"Numpad5":i=2,n=At;break;case"Numpad4":i=2,n=gt;break;case"Numpad6":i=2,n=bt}if(0!=n){e.preventDefault();const t=this.inputState.gamepad;s?t[i]|=n:t[i]&=~n}};if(window.addEventListener("keydown",a),window.addEventListener("keyup",a),top&&top!=window)try{top.addEventListener("keydown",a),top.addEventListener("keyup",a)}catch{}const h=()=>{if(navigator.getGamepads)for(const t of navigator.getGamepads()){if(null==t)continue;if("standard"!=t.mapping){this.gamepadUnavailableWarned.has(t.id)||(this.gamepadUnavailableWarned.add(t.id),this.notifications.show("Unsupported gamepad: "+t.id));continue}const e=t.buttons,s=t.axes;let i=0;(e[12].pressed||s[1]<-.5)&&(i|=vt),(e[13].pressed||s[1]>.5)&&(i|=At),(e[14].pressed||s[0]<-.5)&&(i|=gt),(e[15].pressed||s[0]>.5)&&(i|=bt),(e[0].pressed||e[3].pressed||e[5].pressed||e[7].pressed)&&(i|=1),(e[1].pressed||e[2].pressed||e[4].pressed||e[6].pressed)&&(i|=2),e[9].pressed&&(this.showMenu=!0),this.inputState.gamepad[t.index%4]=i}};let l=performance.now();const c=e=>{requestAnimationFrame(c),h();let s=this.inputState;if(null!=this.menuOverlay){if(this.menuOverlay.applyInput(),!this.netplay)return;s=new ie}let i=!1;for(e-l>=200&&(l=e);e>=l;)if(l+=1e3/60,this.netplay)this.netplay.update(s.gamepad[0])&&(i=!0);else{for(let e=0;e<4;++e)t.setGamepad(e,s.gamepad[e]);t.setMouse(s.mouseX,s.mouseY,s.mouseButtons),t.update(),i=!0}i&&(this.hideGamepadOverlay=!!t.getSystemFlag(2),t.composite())};requestAnimationFrame(c)}onMenuButtonPressed(){this.showMenu?this.inputState.gamepad[0]|=1:this.showMenu=!0}closeMenu(){if(this.showMenu){this.showMenu=!1;for(let t=0;t<4;++t)this.inputState.gamepad[t]=0}}saveGameState(){let t=this.savedGameState;null==t&&(t=this.savedGameState=new Ct),t.read(this.runtime),this.notifications.show("State saved")}loadGameState(){if(this.netplay)return void this.notifications.show("State loading disabled during netplay");const t=this.savedGameState;null!=t?(t.write(this.runtime),this.notifications.show("State loaded")):this.notifications.show("Need to save a state first")}exportGameDisk(){if(this.runtime.diskSize<=0)return void this.notifications.show("Disk is empty");const t=new Uint8Array(this.runtime.diskBuffer).slice(0,this.runtime.diskSize),e=new Blob([t],{type:"application/octet-stream"}),s=document.createElement("a");s.style.display="none",s.href=URL.createObjectURL(e),s.download=`${this.diskPrefix}.disk`,document.body.appendChild(s),s.click(),document.body.removeChild(s)}importGameDisk(){if(this.netplay)return void this.notifications.show("Disk importing disabled during netplay");const t=this,e=document.createElement("input");e.style.display="none",e.type="file",e.accept=".disk",e.multiple=!1,e.addEventListener("change",(()=>{const s=e.files;let i=new FileReader;i.addEventListener("load",(()=>{let e=new Uint8Array(i.result).slice(0,yt),s=new Uint8Array(yt);s.set(e),t.runtime.diskBuffer=s.buffer,this.runtime.diskSize=e.length;const n=_t(e);try{localStorage.setItem(this.runtime.diskName,n),t.notifications.show("Disk imported")}catch(r){t.notifications.show("Error importing disk"),console.error("Error importing disk",r)}t.closeMenu()})),i.readAsArrayBuffer(s[0])})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}clearGameDisk(){if(this.netplay)this.notifications.show("Disk clearing disabled during netplay");else{this.runtime.diskBuffer=new ArrayBuffer(yt),this.runtime.diskSize=0;try{localStorage.removeItem(this.runtime.diskName)}catch(t){this.notifications.show("Error clearing disk"),console.error("Error clearing disk",t)}this.notifications.show("Disk cleared")}}async copyNetplayLink(){this.netplay||(this.netplay=this.createNetplay(),this.netplay.host()),async function(t){try{await navigator.clipboard.writeText(t)}catch{let e=document.createElement("dialog");e.title="Netplay URL",e.textContent=t,document.body.append(e);let s=document.createElement("button");s.textContent="Copy",s.style.marginLeft="1em",s.onclick=()=>navigator.clipboard.writeText(t),e.appendChild(s);let i=document.createElement("button");i.textContent="Close",i.style.marginLeft="1em",i.onclick=()=>{document.body.removeChild(e)},e.appendChild(i),e.showModal()}}(await this.netplay.getInviteLink()),this.notifications.show("Netplay link copied to clipboard")}async resetCart(t,e=!1){if(this.netplay)return void this.notifications.show("Reset disabled during netplay");let s;t||(t=this.runtime.wasmBuffer),e&&(s=new Ct,s.read(this.runtime)),this.runtime.reset(!0),this.runtime.pauseState|=2,await this.runtime.load(t),this.runtime.pauseState&=-3,s?s.write(this.runtime):this.runtime.start()}createNetplay(){const t=new Gt(this.runtime);return t.onstart=t=>this.notifications.show(`Joined as player ${t+1}`),t.onjoin=t=>this.notifications.show(`Player ${t+1} joined`),t.onleave=t=>this.notifications.show(`Player ${t+1} left`),t}getNetplaySummary(){return this.netplay?this.netplay.getSummary():[]}connectedCallback(){super.connectedCallback(),window.addEventListener("pointerup",this.onPointerUp)}disconnectedCallback(){window.removeEventListener("pointerup",this.onPointerUp),super.disconnectedCallback()}render(){return j`<div class="content">${this.showMenu?j`<wasm4-menu-overlay .app="${this}">`:""}<wasm4-notifications><\u002Fwasm4-notifications>${this.runtime.canvas}<\u002Fdiv>${this.hideGamepadOverlay?"":j`<wasm4-virtual-gamepad .app="${this}">`}`}},t.App.styles=a`:host{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;background:#202020}.content{width:100vmin;height:100vmin;overflow:hidden}@media (pointer:coarse) and (max-aspect-ratio:2/3){.content{position:absolute;top:calc((100% - 220px - 100vmin)/ 2)}}.content canvas{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges}`,se([dt()],t.App.prototype,"hideGamepadOverlay",2),se([dt()],t.App.prototype,"showMenu",2),se([pt("wasm4-menu-overlay")],t.App.prototype,"menuOverlay",2),se([pt("wasm4-notifications")],t.App.prototype,"notifications",2),t.App=se([ht("wasm4-app")],t.App);var re=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,ae=(t,e,s,i)=>{for(var n,r=i>1?void 0:i?oe(e,s):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(i?n(e,s,r):n(r))||r);return i&&r&&re(e,s,r),r};const he=0,le=1,ce=[{CONTINUE:0,SAVE_STATE:1,LOAD_STATE:2,DISK_OPTIONS:3,COPY_NETPLAY_LINK:4,RESET_CART:5},{BACK:0,EXPORT_DISK:1,IMPORT_DISK:2,CLEAR_DISK:3}],de=[["CONTINUE","SAVE STATE","LOAD STATE","DISK OPTIONS","COPY NETPLAY URL","RESET CART"],["BACK","EXPORT DISK","IMPORT DISK","CLEAR DISK"]];t.MenuOverlay=class extends ot{constructor(){super(),this.lastGamepad=0,this.selectedIdx=0,this.netplaySummary=[],this.optionContext=0,this.optionContextHistory=[]}get optionIndex(){return ce[this.optionContext]}get options(){return de[this.optionContext]}previousContext(){if(this.optionContextHistory.length>0){const t=this.optionContextHistory.pop();this.resetInput(),this.optionContext=t.context,this.selectedIdx=t.index}}switchContext(t,e=0){this.optionContextHistory.push({context:this.optionContext,index:this.selectedIdx}),this.resetInput(),this.optionContext=t,this.selectedIdx=e}resetInput(){this.app.inputState.gamepad[0]=0}applyInput(){let t=0;for(const s of this.app.inputState.gamepad)t|=s;const e=t&(t^this.lastGamepad);if(this.lastGamepad=t,3&e)if(this.optionContext===he)switch(this.selectedIdx){case this.optionIndex.CONTINUE:this.app.closeMenu();break;case this.optionIndex.SAVE_STATE:this.app.saveGameState(),this.app.closeMenu();break;case this.optionIndex.LOAD_STATE:this.app.loadGameState(),this.app.closeMenu();break;case this.optionIndex.DISK_OPTIONS:this.switchContext(le);break;case this.optionIndex.COPY_NETPLAY_LINK:this.app.copyNetplayLink(),this.app.closeMenu();break;case this.optionIndex.RESET_CART:this.app.resetCart(),this.app.closeMenu()}else if(this.optionContext===le)switch(this.selectedIdx){case this.optionIndex.BACK:this.previousContext();break;case this.optionIndex.EXPORT_DISK:this.app.exportGameDisk(),this.app.closeMenu();break;case this.optionIndex.IMPORT_DISK:this.resetInput(),this.app.importGameDisk();break;case this.optionIndex.CLEAR_DISK:this.app.clearGameDisk(),this.app.closeMenu()}e&At&&this.selectedIdx++,e&vt&&this.selectedIdx--,this.selectedIdx=(this.selectedIdx+this.options.length)%this.options.length}connectedCallback(){super.connectedCallback();const t=()=>{this.netplaySummary=this.app.getNetplaySummary()};t(),this.netplayPollInterval=window.setInterval(t,1e3)}disconnectedCallback(){window.clearInterval(this.netplayPollInterval),super.disconnectedCallback()}render(){return j`<div class="version">WASM-4 v${"2.7.0"}<\u002Fdiv><div class="menu"><ul style="display:${this.optionContext===he?"inherit":"none"}">${ne(de[he],((t,e)=>j`<li class="${this.selectedIdx==e?"selected":""}" }>${t}<\u002Fli>`))}<\u002Ful><ul style="display:${this.optionContext===le?"inherit":"none"}">${ne(de[le],((t,e)=>j`<li class="${this.selectedIdx==e?"selected":""}" }>${t}<\u002Fli>`))}<\u002Ful><\u002Fdiv><div class="netplay-summary">${ne(this.netplaySummary,(t=>{const e=t.ping<100?"good":t.ping<200?"ok":"bad",s=t.ping<0?j`<span class="ping-you">YOU<\u002Fspan>`:j`<span class="ping-${e}">${Math.ceil(t.ping)}ms<\u002Fspan>`;return j`<div>PLAYER ${t.playerIdx>=0?t.playerIdx+1:"?"} ${s}<\u002Fdiv>`}))}<\u002Fdiv>`}},t.MenuOverlay.styles=a`:host{width:100vmin;height:100vmin;position:absolute;color:#a0a0a0;font:16px wasm4-font;display:flex;align-items:center;justify-content:center;flex-direction:column;background:rgba(0,0,0,.85)}.version{color:#fff;padding-bottom:1em}.menu{border:2px solid #f0f0f0;padding:0 1em 0 1em;line-height:2em}.netplay-summary{margin-top:2em;line-height:1.5em}.ping-you{color:#f0f0f0}.ping-good{color:green}.ping-ok{color:#ff0}.ping-bad{color:red}ul{list-style:none;padding-left:0;padding-right:1em}li::before{content:"\\00a0\\00a0"}li.selected::before{content:"> "}li.selected{color:#fff}`,ae([dt()],t.MenuOverlay.prototype,"selectedIdx",2),ae([dt()],t.MenuOverlay.prototype,"netplaySummary",2),t.MenuOverlay=ae([ht("wasm4-menu-overlay")],t.MenuOverlay);var ue=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,fe=(t,e,s,i)=>{for(var n,r=i>1?void 0:i?pe(e,s):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(i?n(e,s,r):n(r))||r);return i&&r&&ue(e,s,r),r};function me(t,e,s){t&&(s?t.classList.add(e):t.classList.remove(e))}t.VirtualGamepad=class extends ot{constructor(){super(...arguments),this.touchEvents=new Map,this.onPointerEvent=t=>{if("touch"!=t.pointerType)return;switch(t.preventDefault(),t.type){case"pointerdown":case"pointermove":this.touchEvents.set(t.pointerId,t);break;default:this.touchEvents.delete(t.pointerId)}let e=0;if(this.touchEvents.size){const t=100,s=10,i=50,n=.6,r=this.dpad.getBoundingClientRect(),o=r.x+r.width/2,a=r.y+r.height/2,h=this.action1.getBoundingClientRect(),l=h.x+h.width/2,c=h.y+h.height/2,d=this.action2.getBoundingClientRect(),u=d.x+d.width/2,p=d.y+d.height/2;let f,m,y,w,g;for(const b of this.touchEvents.values())f=b.clientX-o,m=b.clientY-a,y=Math.sqrt(f*f+m*m),y<t&&y>s&&(w=f/y,g=m/y,-w>n?e|=gt:w>n&&(e|=bt),-g>n?e|=vt:g>n&&(e|=At)),f=b.clientX-l,m=b.clientY-c,f*f+m*m<i*i&&(e|=1),f=b.clientX-u,m=b.clientY-p,f*f+m*m<i*i&&(e|=2)}me(this.action1,"pressed",1&e),me(this.action2,"pressed",2&e),me(this.dpad,"pressed-left",e&gt),me(this.dpad,"pressed-right",e&bt),me(this.dpad,"pressed-up",e&vt),me(this.dpad,"pressed-down",e&At),this.app.inputState.gamepad[0]=e}}connectedCallback(){super.connectedCallback(),window.addEventListener("pointercancel",this.onPointerEvent),window.addEventListener("pointerdown",this.onPointerEvent),window.addEventListener("pointermove",this.onPointerEvent),window.addEventListener("pointerup",this.onPointerEvent)}disconnectedCallback(){window.removeEventListener("pointercancel",this.onPointerEvent),window.removeEventListener("pointerdown",this.onPointerEvent),window.removeEventListener("pointermove",this.onPointerEvent),window.removeEventListener("pointerup",this.onPointerEvent),super.disconnectedCallback()}onMenuButtonPressed(t){this.app.onMenuButtonPressed(),t.stopImmediatePropagation()}render(){return j`<div class="menu" @pointerdown="${this.onMenuButtonPressed}"><\u002Fdiv><div class="dpad"><\u002Fdiv><div class="action1">X<\u002Fdiv><div class="action2">Z<\u002Fdiv>`}},t.VirtualGamepad.styles=a`:host{display:none}@media (hover:none) or (pointer:coarse){:host{display:inherit}}.dpad{pointer-events:none;position:absolute;width:39px;height:120px;left:69px;bottom:30px;background:#444;border-radius:9px}.dpad:before{position:absolute;width:120px;height:39px;top:39px;left:-39px;background:#444;border-radius:9px;content:""}.dpad:after{position:absolute;height:39px;width:39px;top:39px;border-radius:100%;background:#333;content:""}.dpad.pressed-left:before{border-left:4px solid #a93671;width:116px}.dpad.pressed-right:before{border-right:4px solid #a93671;width:116px}.dpad.pressed-up{border-top:4px solid #a93671}.dpad.pressed-down{border-bottom:4px solid #a93671;height:116px}.action1{right:80px;bottom:30px}.action2{right:30px;bottom:90px}.action1,.action2{pointer-events:none;position:absolute;width:60px;height:60px;border:4px solid #a93671;border-radius:50px;color:#a93671;font:24px wasm4-font;text-align:center;line-height:60px}.action1.pressed,.action2.pressed{background:#a93671}.menu{position:absolute;background:#444;width:60px;height:20px;bottom:200px;right:35px;border-radius:10px}`,fe([pt(".dpad")],t.VirtualGamepad.prototype,"dpad",2),fe([pt(".action1")],t.VirtualGamepad.prototype,"action1",2),fe([pt(".action2")],t.VirtualGamepad.prototype,"action2",2),t.VirtualGamepad=fe([ht("wasm4-virtual-gamepad")],t.VirtualGamepad);var ye=Object.defineProperty,we=Object.getOwnPropertyDescriptor,ge=(t,e,s,i)=>{for(var n,r=i>1?void 0:i?we(e,s):e,o=t.length-1;o>=0;o--)(n=t[o])&&(r=(i?n(e,s,r):n(r))||r);return i&&r&&ye(e,s,r),r};return t.Notifications=class extends ot{constructor(){super(...arguments),this.notifications=[]}show(t){this.notifications=this.notifications.concat([t]),setTimeout((()=>{this.notifications=this.notifications.slice(1)}),5e3)}render(){return this.notifications.map((t=>j`<div class="notification">${t}<\u002Fdiv>`))}},t.Notifications.styles=a`:host{width:100vmin;height:100vmin;position:absolute;pointer-events:none;color:#fff;font:24px wasm4-font;display:flex;flex-direction:column}.notification{background:rgba(0,0,0,.85);padding:.5em;animation:appear .5s ease-out}@keyframes appear{from{padding-left:2em;opacity:0}to{opacity:1;padding-left:.5em}}`,ge([dt()],t.Notifications.prototype,"notifications",2),t.Notifications=ge([ht("wasm4-notifications")],t.Notifications),Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),t}({});
</script>
  <wasm4-app></wasm4-app>
</body>
</html>


================================================
FILE: teams/天地一!屋!大爱盟/src/antity/antity_memory.mbt
================================================
let low_y:Int=150

//底部状态栏
//HP显示
// pub fn hp()->Frame_effects_{
// 	{begin:0,
//   xlen:12,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new@bitset.Bitset::new(2,"101000101000101010100000101000101000101010101010101000101000101000001010101000101000101000001010101010101000101010101010101010101000101010101000101000101000101000000000101000101000101000000000101000101000101000000000101000101000101000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"001001000011001001000000001001000000001001000000000001000000000001000001001001001111001001001111001001001111001001001111")
// 	]}
// }
// pub fn num0()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new(2,"000001010000000101010100010100000101010100000101010100000101010100000101010100000101000101010100000001010000000000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"110011100001000000000000000000000000000000100001110011111111")
// 	]}
// }
// pub fn num1()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new(2,"000001010000000101010000010101010000010001010000000001010000000001010000000001010000010101010101010101010101000000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"110011100011000011010011110011110011110011000000000000111111")
// 	]}
// }
// pub fn num2()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new(2,"000001010000000101010100010100000101010100000101000000010100000001010000000101000000010101010101010101010101000000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"110011100001001100001100111001110011100111000000000000111111")
// 	]}
// }
// pub fn num3()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new(2,"000101010000010101010100010000000101000000000101000101010100000000000101000000000101010101010101000101010100000000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"100011000001011100111100100001111100111100000000100001111111")
// 	]}
// }
// pub fn num4()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new(2,"000000010100000001010100000100010100000100010100010000010100010000010101010101010101000000010100000000010100000000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"111001110001100001100001000001000000000000111001111001111111")
// 	]}
// }
// pub fn num5()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bitset.Bitset::new(2,"010101010101010101010101010000000000010101000000000101010100000000010101000000000101000000000101010101010100000000000000")
// 	],
// 	back_ground:[
// 		@bitset.Bitset::new(1,"000000000000011111000111100001111000111100111100000001111111")
// 	]}
// }
// pub fn num6()->Frame_effects_{
// 	{begin:0,
//   xlen:6,
//   ylen:10,
//   sprite:[
// 		@bi
Download .txt
gitextract_8j9h2k2k/

├── .github/
│   └── workflows/
│       └── publish.yml
├── .gitignore
├── .nvmrc
├── README.md
├── dev/
│   └── data.json
├── package.json
├── src/
│   └── build.mts
├── teams/
│   ├── .gitkeep
│   ├── CS赏金猎手/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.wasm
│   │   └── title
│   ├── MoonBit官方样例1/
│   │   └── game.wasm
│   ├── MoonBit官方样例2/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.wasm
│   │   └── title
│   ├── MoonBit官方样例3/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.wasm
│   │   └── title
│   ├── 一个队伍/
│   │   ├── README.md
│   │   └── game.wasm
│   ├── 天地一!屋!大爱盟/
│   │   ├── README.md
│   │   ├── control
│   │   ├── game.html
│   │   ├── game.wasm
│   │   ├── src/
│   │   │   ├── antity/
│   │   │   │   ├── antity_memory.mbt
│   │   │   │   ├── moon.pkg.json
│   │   │   │   ├── struct.mbt
│   │   │   │   └── struct_trait.mbt
│   │   │   ├── bitset/
│   │   │   │   ├── bitset.mbt
│   │   │   │   └── moon.pkg.json
│   │   │   ├── interface/
│   │   │   │   ├── gaming.mbt
│   │   │   │   ├── interface_control.mbt
│   │   │   │   └── moon.pkg.json
│   │   │   ├── moon.pkg.json
│   │   │   ├── time_cnt/
│   │   │   │   ├── moon.pkg.json
│   │   │   │   └── timer.mbt
│   │   │   └── top.mbt
│   │   └── title
│   └── 极品杏鲍菇/
│       ├── README.md
│       ├── control
│       ├── game.wasm
│       └── title
└── vite.config.mjs
Download .txt
SYMBOL INDEX (1 symbols across 1 files)

FILE: vite.config.mjs
  method buildStart (line 9) | buildStart() {
Condensed preview — 46 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (250K chars).
[
  {
    "path": ".github/workflows/publish.yml",
    "chars": 1514,
    "preview": "# Simple workflow for deploying static content to GitHub Pages\nname: Deploy static content to Pages\n\non:\n  # Runs on pus"
  },
  {
    "path": ".gitignore",
    "chars": 47,
    "preview": "/dist\nnode_modules\nmeta.json\ntest.mts\n.DS_Store"
  },
  {
    "path": ".nvmrc",
    "chars": 8,
    "preview": "v22.1.0\n"
  },
  {
    "path": "README.md",
    "chars": 229,
    "preview": "# 飞机大战\n\n1.游戏玩法与实现:经典的飞机大战,你一看封面就知道这是啥,一进去就知道怎么玩。后端全部采用wasm4。\n2.技术亮点:{\n    在wasm4特殊的渲染机制下,使用单个优先队列实现多音效多线程的效果;\n    项目结构清晰"
  },
  {
    "path": "dev/data.json",
    "chars": 20123,
    "preview": "{\n  \"url\": \"https://api.github.com/repos/moonbitlang/MoonBit-Code-JAM-2024/pulls/2\",\n  \"id\": 2076113813,\n  \"node_id\": \"P"
  },
  {
    "path": "package.json",
    "chars": 348,
    "preview": "{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"DEV=true vite\",\n    \"build\": \"tsx ./src/build.mts\"\n  },\n  \"devDependenc"
  },
  {
    "path": "src/build.mts",
    "chars": 12706,
    "preview": "import fs from 'node:fs'\nimport cp from 'node:child_process'\nimport querystring from 'node:querystring'\nimport markdowni"
  },
  {
    "path": "teams/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "teams/CS赏金猎手/README.md",
    "chars": 180,
    "preview": "# 九宫棋(Tic-Tac-Toe)\n\n## 介绍\n九宫棋(井字棋),也被称为Tic-Tac-Toe,是一个简单但富有挑战性的经典策略游戏。游戏的目标是在一个3×3的网格上,通过放置棋子来形成一条直线,无论是水平的、垂直的还是对角线,率先完"
  },
  {
    "path": "teams/CS赏金猎手/control",
    "chars": 35,
    "preview": "1.按`空格键`开始\n2.按`上下左右`选择棋格\n3.按`空格键`落子"
  },
  {
    "path": "teams/CS赏金猎手/title",
    "chars": 16,
    "preview": "九宫棋(Tic-Tac-Toe)"
  },
  {
    "path": "teams/MoonBit官方样例2/README.md",
    "chars": 17,
    "preview": "# MoonBit 官方提交样例\n"
  },
  {
    "path": "teams/MoonBit官方样例2/control",
    "chars": 19,
    "preview": "P1 controls: Arrows"
  },
  {
    "path": "teams/MoonBit官方样例2/title",
    "chars": 8,
    "preview": "PingPong"
  },
  {
    "path": "teams/MoonBit官方样例3/README.md",
    "chars": 128,
    "preview": "# Tankle\n\nCredit to [@Milky2018](https://github.com/Milky2018)\n\nCheckout source code at https://github.com/Milky2018/tan"
  },
  {
    "path": "teams/MoonBit官方样例3/control",
    "chars": 10,
    "preview": "方向键移动,空格攻击"
  },
  {
    "path": "teams/MoonBit官方样例3/title",
    "chars": 6,
    "preview": "Tankle"
  },
  {
    "path": "teams/一个队伍/README.md",
    "chars": 200,
    "preview": "## 操作\n\n`e` `d` `s` `f`移动\n\n## 玩法\n\n收集30个部件通关。移动到部件上自动收集, 提升等级并重置地图。<br>\n吃掉♥可以回满血量。<br>\n处在房子格不会受到攻击。<br>\n战胜怪物会获得经验自动升级, 向怪物"
  },
  {
    "path": "teams/天地一!屋!大爱盟/README.md",
    "chars": 412,
    "preview": "# 飞机大战\n## 游戏玩法\n\n### 自机\n\n有一百的生命值,初始发射普通子弹\n\n### 敌机\n\n1. 中型机\n\n   会发射普通子弹,发射方向为自机方向\n\n2. 小型机\n\n   可以理解为FPV自杀式无人机\n\n### 弹药箱\n\n1. 回"
  },
  {
    "path": "teams/天地一!屋!大爱盟/control",
    "chars": 21,
    "preview": "上下左右控制飞机移动,子弹自动垂直向上发射"
  },
  {
    "path": "teams/天地一!屋!大爱盟/game.html",
    "chars": 158257,
    "preview": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, in"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/antity/antity_memory.mbt",
    "chars": 16972,
    "preview": "let low_y:Int=150\n\n//底部状态栏\n//HP显示\n// pub fn hp()->Frame_effects_{\n// \t{begin:0,\n//   xlen:12,\n//   ylen:10,\n//   sprite:"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/antity/moon.pkg.json",
    "chars": 80,
    "preview": "{\n\t\"import\": [\n\t  \"moonbitlang/wasm4\",\n\t  \"GAME/time_cnt\",\n\t  \"GAME/bitset\"\n\t]\n}"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/antity/struct.mbt",
    "chars": 2138,
    "preview": "pub struct Location{\n  mut x:Double\n  mut y:Double\n  // mut newx:Double\n  // mut newy:Double\n  type_:UInt\n//用于记录实体的位置\n}\n"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/antity/struct_trait.mbt",
    "chars": 9227,
    "preview": "// pub trait Strike{\n// \tis_strike(Self,Self)->Bool\n// }\n\n// pub trait Updata_pos{\n// \tupdata_pos(Self)->Unit\n// }\n\n// p"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/bitset/bitset.mbt",
    "chars": 2012,
    "preview": "let up_bit:Int=32;\npub struct Bitset{\n  priv mut bits:FixedArray[UInt]\n  priv mut top:Int//表示存了多少个pre_size\n  per_size:In"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/bitset/moon.pkg.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/interface/gaming.mbt",
    "chars": 12379,
    "preview": "fn gaming1()->Unit{\n  gaming_logic()\n  // @antity.player_Plane_1.print()\n}\nlet random:@random.Rand=@random.Rand::new()\nl"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/interface/interface_control.mbt",
    "chars": 389,
    "preview": "pub let interface_type:Ref[Int]=Ref::new(1);\nlet button_state:Ref[@wasm4.GamePad]=Ref::new(@wasm4.GamePad::default())\n//"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/interface/moon.pkg.json",
    "chars": 111,
    "preview": "{\n  \"import\": [\n    \"moonbitlang/wasm4\",\n\t  {\"path\": \"GAME/antity\",\"alias\": \"antity\"},\n\t  \"GAME/time_cnt\"\n  ]\n}"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/moon.pkg.json",
    "chars": 304,
    "preview": "{\n  \"import\": [\n    \"moonbitlang/wasm4\",\n    \"GAME/interface\",\n    \"GAME/time_cnt\"\n  ],\n  \"link\": {\n    \"wasm\": {\n      "
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/time_cnt/moon.pkg.json",
    "chars": 44,
    "preview": "{\n\t\"import\": [\n\t  \"moonbitlang/wasm4\"\n\t]\n  }"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/time_cnt/timer.mbt",
    "chars": 141,
    "preview": "let frame_cnt:Ref[UInt]=Ref::new(0)\n\npub fn update_time()->Unit{\n\tframe_cnt.val=frame_cnt.val+1;\n}\n\npub fn get_time()->U"
  },
  {
    "path": "teams/天地一!屋!大爱盟/src/top.mbt",
    "chars": 403,
    "preview": "pub fn start() -> Unit {\n\t@wasm4.set_palette(1,@wasm4.rgb(1377129))\n\t@wasm4.set_palette(4,@wasm4.rgb(11221214))\n\t@wasm4."
  },
  {
    "path": "teams/天地一!屋!大爱盟/title",
    "chars": 4,
    "preview": "飞机大战"
  },
  {
    "path": "teams/极品杏鲍菇/README.md",
    "chars": 126,
    "preview": "# 极品杏鲍菇\n\n## 游戏操控\n玩家回合:\n\n    1. 消耗行动点(左下角展示)可以进行左右移动(左右方向键)\n\n    2.上下方向键可以调整射击角度\n\n    3.按住X可以进行蓄力,松开后进行射击\n    \n    4.注意横风"
  },
  {
    "path": "teams/极品杏鲍菇/control",
    "chars": 36,
    "preview": "左右键移动,上下键调整射击角度,X键按住蓄力,松开射击。注意风向的影响\n"
  },
  {
    "path": "teams/极品杏鲍菇/title",
    "chars": 6,
    "preview": "极品杏鲍菇\n"
  },
  {
    "path": "vite.config.mjs",
    "chars": 451,
    "preview": "import { defineConfig } from 'vite'\nimport chokidar from 'chokidar'\nimport cp from 'node:child_process'\n\n/**\n * @type {i"
  }
]

// ... and 7 more files (download for full content)

About this extraction

This page contains the full source code of the Demonmasterlqx/MoonBit-Code-JAM-2024 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 46 files (233.5 KB), approximately 111.3k tokens, and a symbol index with 1 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!