@wirecat/max-cli 0.0.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +531 -0
- package/dist/adapter/max-adapter.d.ts +17 -0
- package/dist/adapter/max-adapter.d.ts.map +1 -0
- package/dist/adapter/max-adapter.js +364 -0
- package/dist/adapter/max-adapter.js.map +1 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +9 -0
- package/dist/app.js.map +1 -0
- package/dist/bin/max.d.ts +3 -0
- package/dist/bin/max.d.ts.map +1 -0
- package/dist/bin/max.js +20 -0
- package/dist/bin/max.js.map +1 -0
- package/dist/bot/adapter.d.ts +25 -0
- package/dist/bot/adapter.d.ts.map +1 -0
- package/dist/bot/adapter.js +404 -0
- package/dist/bot/adapter.js.map +1 -0
- package/dist/bot/auth.d.ts +13 -0
- package/dist/bot/auth.d.ts.map +1 -0
- package/dist/bot/auth.js +9 -0
- package/dist/bot/auth.js.map +1 -0
- package/dist/bot/client.d.ts +26 -0
- package/dist/bot/client.d.ts.map +1 -0
- package/dist/bot/client.js +105 -0
- package/dist/bot/client.js.map +1 -0
- package/dist/bot/generated/manifest.d.ts +3 -0
- package/dist/bot/generated/manifest.d.ts.map +1 -0
- package/dist/bot/generated/manifest.js +1232 -0
- package/dist/bot/generated/manifest.js.map +1 -0
- package/dist/bot/generated/schemas.d.ts +271 -0
- package/dist/bot/generated/schemas.d.ts.map +1 -0
- package/dist/bot/generated/schemas.js +869 -0
- package/dist/bot/generated/schemas.js.map +1 -0
- package/dist/bot/generated/types.d.ts +1088 -0
- package/dist/bot/generated/types.d.ts.map +1 -0
- package/dist/bot/generated/types.js +5 -0
- package/dist/bot/generated/types.js.map +1 -0
- package/dist/bot/input.d.ts +6 -0
- package/dist/bot/input.d.ts.map +1 -0
- package/dist/bot/input.js +6 -0
- package/dist/bot/input.js.map +1 -0
- package/dist/bot/joins.d.ts +26 -0
- package/dist/bot/joins.d.ts.map +1 -0
- package/dist/bot/joins.js +56 -0
- package/dist/bot/joins.js.map +1 -0
- package/dist/bot/keep.d.ts +25 -0
- package/dist/bot/keep.d.ts.map +1 -0
- package/dist/bot/keep.js +98 -0
- package/dist/bot/keep.js.map +1 -0
- package/dist/bot/map.d.ts +14 -0
- package/dist/bot/map.d.ts.map +1 -0
- package/dist/bot/map.js +101 -0
- package/dist/bot/map.js.map +1 -0
- package/dist/bot/mcp-tools.d.ts +4 -0
- package/dist/bot/mcp-tools.d.ts.map +1 -0
- package/dist/bot/mcp-tools.js +78 -0
- package/dist/bot/mcp-tools.js.map +1 -0
- package/dist/bot/permissions.d.ts +14 -0
- package/dist/bot/permissions.d.ts.map +1 -0
- package/dist/bot/permissions.js +88 -0
- package/dist/bot/permissions.js.map +1 -0
- package/dist/bot/registry.d.ts +11 -0
- package/dist/bot/registry.d.ts.map +1 -0
- package/dist/bot/registry.js +13 -0
- package/dist/bot/registry.js.map +1 -0
- package/dist/bot/russian-trusted-root.d.ts +8 -0
- package/dist/bot/russian-trusted-root.d.ts.map +1 -0
- package/dist/bot/russian-trusted-root.js +41 -0
- package/dist/bot/russian-trusted-root.js.map +1 -0
- package/dist/bot/transport.d.ts +46 -0
- package/dist/bot/transport.d.ts.map +1 -0
- package/dist/bot/transport.js +252 -0
- package/dist/bot/transport.js.map +1 -0
- package/dist/bot/uploads.d.ts +42 -0
- package/dist/bot/uploads.d.ts.map +1 -0
- package/dist/bot/uploads.js +145 -0
- package/dist/bot/uploads.js.map +1 -0
- package/dist/client.d.ts +650 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2836 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/account.d.ts +3 -0
- package/dist/commands/account.d.ts.map +1 -0
- package/dist/commands/account.js +4 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/bot-comments.d.ts +3 -0
- package/dist/commands/bot-comments.d.ts.map +1 -0
- package/dist/commands/bot-comments.js +74 -0
- package/dist/commands/bot-comments.js.map +1 -0
- package/dist/commands/bot-context.d.ts +38 -0
- package/dist/commands/bot-context.d.ts.map +1 -0
- package/dist/commands/bot-context.js +121 -0
- package/dist/commands/bot-context.js.map +1 -0
- package/dist/commands/bot-members.d.ts +14 -0
- package/dist/commands/bot-members.d.ts.map +1 -0
- package/dist/commands/bot-members.js +64 -0
- package/dist/commands/bot-members.js.map +1 -0
- package/dist/commands/bot-messenger.d.ts +10 -0
- package/dist/commands/bot-messenger.d.ts.map +1 -0
- package/dist/commands/bot-messenger.js +101 -0
- package/dist/commands/bot-messenger.js.map +1 -0
- package/dist/commands/bot-reads.d.ts +4 -0
- package/dist/commands/bot-reads.d.ts.map +1 -0
- package/dist/commands/bot-reads.js +13 -0
- package/dist/commands/bot-reads.js.map +1 -0
- package/dist/commands/bot-sends.d.ts +13 -0
- package/dist/commands/bot-sends.d.ts.map +1 -0
- package/dist/commands/bot-sends.js +103 -0
- package/dist/commands/bot-sends.js.map +1 -0
- package/dist/commands/bot-setup.d.ts +3 -0
- package/dist/commands/bot-setup.d.ts.map +1 -0
- package/dist/commands/bot-setup.js +20 -0
- package/dist/commands/bot-setup.js.map +1 -0
- package/dist/commands/bot.d.ts +3 -0
- package/dist/commands/bot.d.ts.map +1 -0
- package/dist/commands/bot.js +60 -0
- package/dist/commands/bot.js.map +1 -0
- package/dist/commands/calls.d.ts +3 -0
- package/dist/commands/calls.d.ts.map +1 -0
- package/dist/commands/calls.js +4 -0
- package/dist/commands/calls.js.map +1 -0
- package/dist/commands/chats.d.ts +3 -0
- package/dist/commands/chats.d.ts.map +1 -0
- package/dist/commands/chats.js +46 -0
- package/dist/commands/chats.js.map +1 -0
- package/dist/commands/commands.d.ts +2 -0
- package/dist/commands/commands.d.ts.map +1 -0
- package/dist/commands/commands.js +4 -0
- package/dist/commands/commands.js.map +1 -0
- package/dist/commands/complete.d.ts +2 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +34 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +170 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/contacts.d.ts +10 -0
- package/dist/commands/contacts.d.ts.map +1 -0
- package/dist/commands/contacts.js +80 -0
- package/dist/commands/contacts.js.map +1 -0
- package/dist/commands/context.d.ts +126 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +137 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/doctor.d.ts +24 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +308 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/mcp.d.ts +36 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +214 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/messages.d.ts +3 -0
- package/dist/commands/messages.d.ts.map +1 -0
- package/dist/commands/messages.js +105 -0
- package/dist/commands/messages.js.map +1 -0
- package/dist/commands/models.d.ts +3 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +4 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/paging.d.ts +59 -0
- package/dist/commands/paging.d.ts.map +1 -0
- package/dist/commands/paging.js +77 -0
- package/dist/commands/paging.js.map +1 -0
- package/dist/commands/recipients.d.ts +9 -0
- package/dist/commands/recipients.d.ts.map +1 -0
- package/dist/commands/recipients.js +74 -0
- package/dist/commands/recipients.js.map +1 -0
- package/dist/commands/runs.d.ts +2 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +4 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/sends.d.ts +3 -0
- package/dist/commands/sends.d.ts.map +1 -0
- package/dist/commands/sends.js +4 -0
- package/dist/commands/sends.js.map +1 -0
- package/dist/commands/serve-members.d.ts +14 -0
- package/dist/commands/serve-members.d.ts.map +1 -0
- package/dist/commands/serve-members.js +54 -0
- package/dist/commands/serve-members.js.map +1 -0
- package/dist/commands/serve-stems.d.ts +9 -0
- package/dist/commands/serve-stems.d.ts.map +1 -0
- package/dist/commands/serve-stems.js +26 -0
- package/dist/commands/serve-stems.js.map +1 -0
- package/dist/commands/serve.d.ts +10 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +79 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/server.d.ts +16 -0
- package/dist/commands/server.d.ts.map +1 -0
- package/dist/commands/server.js +51 -0
- package/dist/commands/server.js.map +1 -0
- package/dist/commands/session.d.ts +15 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +169 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +168 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/skill.d.ts +3 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +7 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/stickers.d.ts +3 -0
- package/dist/commands/stickers.d.ts.map +1 -0
- package/dist/commands/stickers.js +4 -0
- package/dist/commands/stickers.js.map +1 -0
- package/dist/commands/upgrade.d.ts +2 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +14 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/watch.d.ts +27 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +105 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config.d.ts +385 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +372 -0
- package/dist/config.js.map +1 -0
- package/dist/deadline.d.ts +2 -0
- package/dist/deadline.d.ts.map +1 -0
- package/dist/deadline.js +2 -0
- package/dist/deadline.js.map +1 -0
- package/dist/diagnose.d.ts +143 -0
- package/dist/diagnose.d.ts.map +1 -0
- package/dist/diagnose.js +183 -0
- package/dist/diagnose.js.map +1 -0
- package/dist/domain/map.d.ts +65 -0
- package/dist/domain/map.d.ts.map +1 -0
- package/dist/domain/map.js +431 -0
- package/dist/domain/map.js.map +1 -0
- package/dist/domain/models.d.ts +238 -0
- package/dist/domain/models.d.ts.map +1 -0
- package/dist/domain/models.js +17 -0
- package/dist/domain/models.js.map +1 -0
- package/dist/download.d.ts +38 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +199 -0
- package/dist/download.js.map +1 -0
- package/dist/format-markdown.d.ts +13 -0
- package/dist/format-markdown.d.ts.map +1 -0
- package/dist/format-markdown.js +241 -0
- package/dist/format-markdown.js.map +1 -0
- package/dist/generated/client.generated.d.ts +95 -0
- package/dist/generated/client.generated.d.ts.map +1 -0
- package/dist/generated/client.generated.js +91 -0
- package/dist/generated/client.generated.js.map +1 -0
- package/dist/generated/opcodes.generated.d.ts +76 -0
- package/dist/generated/opcodes.generated.d.ts.map +1 -0
- package/dist/generated/opcodes.generated.js +76 -0
- package/dist/generated/opcodes.generated.js.map +1 -0
- package/dist/generated/operations.generated.d.ts +502 -0
- package/dist/generated/operations.generated.d.ts.map +1 -0
- package/dist/generated/operations.generated.js +72 -0
- package/dist/generated/operations.generated.js.map +1 -0
- package/dist/inbox-point.d.ts +3 -0
- package/dist/inbox-point.d.ts.map +1 -0
- package/dist/inbox-point.js +17 -0
- package/dist/inbox-point.js.map +1 -0
- package/dist/install/postinstall.d.ts +8 -0
- package/dist/install/postinstall.d.ts.map +1 -0
- package/dist/install/postinstall.js +62 -0
- package/dist/install/postinstall.js.map +1 -0
- package/dist/install.d.ts +43 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +142 -0
- package/dist/install.js.map +1 -0
- package/dist/markdown.d.ts +13 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +6 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mcp/instructions.d.ts +13 -0
- package/dist/mcp/instructions.d.ts.map +1 -0
- package/dist/mcp/instructions.js +16 -0
- package/dist/mcp/instructions.js.map +1 -0
- package/dist/mcp/legacy-check.d.ts +12 -0
- package/dist/mcp/legacy-check.d.ts.map +1 -0
- package/dist/mcp/legacy-check.js +44 -0
- package/dist/mcp/legacy-check.js.map +1 -0
- package/dist/mcp/photo.d.ts +9 -0
- package/dist/mcp/photo.d.ts.map +1 -0
- package/dist/mcp/photo.js +38 -0
- package/dist/mcp/photo.js.map +1 -0
- package/dist/mcp/prompts.d.ts +7 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +100 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/resources.d.ts +15 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +56 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts +31 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +116 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session.d.ts +30 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +109 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/shared.d.ts +14 -0
- package/dist/mcp/shared.d.ts.map +1 -0
- package/dist/mcp/shared.js +46 -0
- package/dist/mcp/shared.js.map +1 -0
- package/dist/mcp/tools.d.ts +30 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +248 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/messenger.d.ts +15 -0
- package/dist/messenger.d.ts.map +1 -0
- package/dist/messenger.js +149 -0
- package/dist/messenger.js.map +1 -0
- package/dist/moderation/check.d.ts +103 -0
- package/dist/moderation/check.d.ts.map +1 -0
- package/dist/moderation/check.js +273 -0
- package/dist/moderation/check.js.map +1 -0
- package/dist/moderation/points.d.ts +8 -0
- package/dist/moderation/points.d.ts.map +1 -0
- package/dist/moderation/points.js +21 -0
- package/dist/moderation/points.js.map +1 -0
- package/dist/moderation/rules.d.ts +7 -0
- package/dist/moderation/rules.d.ts.map +1 -0
- package/dist/moderation/rules.js +24 -0
- package/dist/moderation/rules.js.map +1 -0
- package/dist/online.d.ts +23 -0
- package/dist/online.d.ts.map +1 -0
- package/dist/online.js +87 -0
- package/dist/online.js.map +1 -0
- package/dist/output.d.ts +2 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +2 -0
- package/dist/output.js.map +1 -0
- package/dist/permissions.d.ts +20 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +76 -0
- package/dist/permissions.js.map +1 -0
- package/dist/profile.d.ts +33 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +60 -0
- package/dist/profile.js.map +1 -0
- package/dist/program.d.ts +10 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +172 -0
- package/dist/program.js.map +1 -0
- package/dist/protocol/connection.d.ts +83 -0
- package/dist/protocol/connection.d.ts.map +1 -0
- package/dist/protocol/connection.js +301 -0
- package/dist/protocol/connection.js.map +1 -0
- package/dist/protocol/frame.d.ts +55 -0
- package/dist/protocol/frame.d.ts.map +1 -0
- package/dist/protocol/frame.js +149 -0
- package/dist/protocol/frame.js.map +1 -0
- package/dist/protocol/lz4.d.ts +15 -0
- package/dist/protocol/lz4.d.ts.map +1 -0
- package/dist/protocol/lz4.js +157 -0
- package/dist/protocol/lz4.js.map +1 -0
- package/dist/record.d.ts +41 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +104 -0
- package/dist/record.js.map +1 -0
- package/dist/rendering/messages.d.ts +24 -0
- package/dist/rendering/messages.d.ts.map +1 -0
- package/dist/rendering/messages.js +172 -0
- package/dist/rendering/messages.js.map +1 -0
- package/dist/report.d.ts +43 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +104 -0
- package/dist/report.js.map +1 -0
- package/dist/resolve.d.ts +6 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +5 -0
- package/dist/resolve.js.map +1 -0
- package/dist/sends.d.ts +17 -0
- package/dist/sends.d.ts.map +1 -0
- package/dist/sends.js +97 -0
- package/dist/sends.js.map +1 -0
- package/dist/server/lines.d.ts +23 -0
- package/dist/server/lines.d.ts.map +1 -0
- package/dist/server/lines.js +56 -0
- package/dist/server/lines.js.map +1 -0
- package/dist/server/replies.d.ts +31 -0
- package/dist/server/replies.d.ts.map +1 -0
- package/dist/server/replies.js +95 -0
- package/dist/server/replies.js.map +1 -0
- package/dist/server/server-connection.d.ts +55 -0
- package/dist/server/server-connection.d.ts.map +1 -0
- package/dist/server/server-connection.js +245 -0
- package/dist/server/server-connection.js.map +1 -0
- package/dist/server/server.d.ts +88 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +634 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/start.d.ts +37 -0
- package/dist/server/start.d.ts.map +1 -0
- package/dist/server/start.js +102 -0
- package/dist/server/start.js.map +1 -0
- package/dist/server/subscribe.d.ts +9 -0
- package/dist/server/subscribe.d.ts.map +1 -0
- package/dist/server/subscribe.js +26 -0
- package/dist/server/subscribe.js.map +1 -0
- package/dist/session/adopt.d.ts +22 -0
- package/dist/session/adopt.d.ts.map +1 -0
- package/dist/session/adopt.js +34 -0
- package/dist/session/adopt.js.map +1 -0
- package/dist/session/browser.d.ts +55 -0
- package/dist/session/browser.d.ts.map +1 -0
- package/dist/session/browser.js +321 -0
- package/dist/session/browser.js.map +1 -0
- package/dist/session/handshake.d.ts +57 -0
- package/dist/session/handshake.d.ts.map +1 -0
- package/dist/session/handshake.js +40 -0
- package/dist/session/handshake.js.map +1 -0
- package/dist/session/login.d.ts +20 -0
- package/dist/session/login.d.ts.map +1 -0
- package/dist/session/login.js +66 -0
- package/dist/session/login.js.map +1 -0
- package/dist/session/prompt.d.ts +2 -0
- package/dist/session/prompt.d.ts.map +1 -0
- package/dist/session/prompt.js +2 -0
- package/dist/session/prompt.js.map +1 -0
- package/dist/session/qr-terminal.d.ts +9 -0
- package/dist/session/qr-terminal.d.ts.map +1 -0
- package/dist/session/qr-terminal.js +34 -0
- package/dist/session/qr-terminal.js.map +1 -0
- package/dist/session/store.d.ts +76 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/store.js +134 -0
- package/dist/session/store.js.map +1 -0
- package/dist/skill.d.ts +7 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +8 -0
- package/dist/skill.js.map +1 -0
- package/dist/spec/check.d.ts +16 -0
- package/dist/spec/check.d.ts.map +1 -0
- package/dist/spec/check.js +44 -0
- package/dist/spec/check.js.map +1 -0
- package/dist/spec/define.d.ts +108 -0
- package/dist/spec/define.d.ts.map +1 -0
- package/dist/spec/define.js +47 -0
- package/dist/spec/define.js.map +1 -0
- package/dist/spec/guards.d.ts +16 -0
- package/dist/spec/guards.d.ts.map +1 -0
- package/dist/spec/guards.js +30 -0
- package/dist/spec/guards.js.map +1 -0
- package/dist/spec/identity.d.ts +57 -0
- package/dist/spec/identity.d.ts.map +1 -0
- package/dist/spec/identity.js +53 -0
- package/dist/spec/identity.js.map +1 -0
- package/dist/spec/index.d.ts +15 -0
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +84 -0
- package/dist/spec/index.js.map +1 -0
- package/dist/spec/operations/account.d.ts +39 -0
- package/dist/spec/operations/account.d.ts.map +1 -0
- package/dist/spec/operations/account.js +103 -0
- package/dist/spec/operations/account.js.map +1 -0
- package/dist/spec/operations/assets.d.ts +17 -0
- package/dist/spec/operations/assets.d.ts.map +1 -0
- package/dist/spec/operations/assets.js +43 -0
- package/dist/spec/operations/assets.js.map +1 -0
- package/dist/spec/operations/attachments.d.ts +15 -0
- package/dist/spec/operations/attachments.d.ts.map +1 -0
- package/dist/spec/operations/attachments.js +40 -0
- package/dist/spec/operations/attachments.js.map +1 -0
- package/dist/spec/operations/banners.d.ts +7 -0
- package/dist/spec/operations/banners.d.ts.map +1 -0
- package/dist/spec/operations/banners.js +16 -0
- package/dist/spec/operations/banners.js.map +1 -0
- package/dist/spec/operations/calls.d.ts +8 -0
- package/dist/spec/operations/calls.d.ts.map +1 -0
- package/dist/spec/operations/calls.js +25 -0
- package/dist/spec/operations/calls.js.map +1 -0
- package/dist/spec/operations/chats.d.ts +115 -0
- package/dist/spec/operations/chats.d.ts.map +1 -0
- package/dist/spec/operations/chats.js +331 -0
- package/dist/spec/operations/chats.js.map +1 -0
- package/dist/spec/operations/contacts.d.ts +39 -0
- package/dist/spec/operations/contacts.d.ts.map +1 -0
- package/dist/spec/operations/contacts.js +135 -0
- package/dist/spec/operations/contacts.js.map +1 -0
- package/dist/spec/operations/folders.d.ts +31 -0
- package/dist/spec/operations/folders.d.ts.map +1 -0
- package/dist/spec/operations/folders.js +94 -0
- package/dist/spec/operations/folders.js.map +1 -0
- package/dist/spec/operations/login.d.ts +64 -0
- package/dist/spec/operations/login.d.ts.map +1 -0
- package/dist/spec/operations/login.js +105 -0
- package/dist/spec/operations/login.js.map +1 -0
- package/dist/spec/operations/messages.d.ts +142 -0
- package/dist/spec/operations/messages.d.ts.map +1 -0
- package/dist/spec/operations/messages.js +347 -0
- package/dist/spec/operations/messages.js.map +1 -0
- package/dist/spec/operations/session.d.ts +120 -0
- package/dist/spec/operations/session.d.ts.map +1 -0
- package/dist/spec/operations/session.js +202 -0
- package/dist/spec/operations/session.js.map +1 -0
- package/dist/spec/operations/uploads.d.ts +31 -0
- package/dist/spec/operations/uploads.d.ts.map +1 -0
- package/dist/spec/operations/uploads.js +59 -0
- package/dist/spec/operations/uploads.js.map +1 -0
- package/dist/spec/scalars.d.ts +17 -0
- package/dist/spec/scalars.d.ts.map +1 -0
- package/dist/spec/scalars.js +33 -0
- package/dist/spec/scalars.js.map +1 -0
- package/dist/transcribe/index.d.ts +70 -0
- package/dist/transcribe/index.d.ts.map +1 -0
- package/dist/transcribe/index.js +127 -0
- package/dist/transcribe/index.js.map +1 -0
- package/dist/transcribe/install.d.ts +2 -0
- package/dist/transcribe/install.d.ts.map +1 -0
- package/dist/transcribe/install.js +2 -0
- package/dist/transcribe/install.js.map +1 -0
- package/dist/transcribe/models.d.ts +5 -0
- package/dist/transcribe/models.d.ts.map +1 -0
- package/dist/transcribe/models.js +6 -0
- package/dist/transcribe/models.js.map +1 -0
- package/dist/transcribe/speech.d.ts +25 -0
- package/dist/transcribe/speech.d.ts.map +1 -0
- package/dist/transcribe/speech.js +107 -0
- package/dist/transcribe/speech.js.map +1 -0
- package/dist/update.d.ts +31 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +69 -0
- package/dist/update.js.map +1 -0
- package/dist/upload.d.ts +15 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +97 -0
- package/dist/upload.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/voice.d.ts +9 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +36 -0
- package/dist/voice.js.map +1 -0
- package/dist/wire-events.d.ts +23 -0
- package/dist/wire-events.d.ts.map +1 -0
- package/dist/wire-events.js +47 -0
- package/dist/wire-events.js.map +1 -0
- package/install/postinstall.mjs +3 -0
- package/install/windows.ps1 +160 -0
- package/package.json +119 -2
- package/skills/max-cli/SKILL.md +518 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-core";
|
|
2
|
+
import { asId } from "../protocol/frame.js";
|
|
3
|
+
export const toChat = (raw) => ({
|
|
4
|
+
id: asId(raw.id) ?? "",
|
|
5
|
+
title: text(raw.title),
|
|
6
|
+
kind: chatKind(raw.type),
|
|
7
|
+
unreadCount: count(raw.newMessages),
|
|
8
|
+
lastMessageAt: timestamp(raw.lastEventTime ?? asRecord(raw.lastMessage)?.time),
|
|
9
|
+
participantsCount: count(raw.participantsCount),
|
|
10
|
+
});
|
|
11
|
+
/** Our name for each flag MAX lets an owner write (PyMax `ChatOption`); the rest are read-only. */
|
|
12
|
+
export const SETTING_FLAGS = {
|
|
13
|
+
allCanPin: "ALL_CAN_PIN_MESSAGE",
|
|
14
|
+
onlyAdminsAdd: "ONLY_ADMIN_CAN_ADD_MEMBER",
|
|
15
|
+
onlyAdminsCall: "ONLY_ADMIN_CAN_CALL",
|
|
16
|
+
onlyOwnerEditsInfo: "ONLY_OWNER_CAN_CHANGE_ICON_TITLE",
|
|
17
|
+
membersSeeLink: "MEMBERS_CAN_SEE_PRIVATE_LINK",
|
|
18
|
+
};
|
|
19
|
+
export const toGroupCard = (raw) => {
|
|
20
|
+
// A dialog's `options` is a number (max-api-docs), so nothing in it is one of these flags.
|
|
21
|
+
const options = asRecord(raw.options);
|
|
22
|
+
const flag = (name) => (typeof options?.[name] === "boolean" ? options[name] : null);
|
|
23
|
+
const settings = Object.fromEntries(Object.entries(SETTING_FLAGS).map(([ours, theirs]) => [ours, flag(theirs)]));
|
|
24
|
+
return {
|
|
25
|
+
...toChat(raw),
|
|
26
|
+
description: text(raw.description),
|
|
27
|
+
access: typeof raw.access === "string" ? raw.access.toLowerCase() : null,
|
|
28
|
+
link: text(raw.link),
|
|
29
|
+
settings,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export const toMessage = (raw, chatId, lookup = {}) => {
|
|
33
|
+
const senderId = asId(raw.sender);
|
|
34
|
+
return {
|
|
35
|
+
id: asId(raw.id) ?? "",
|
|
36
|
+
chatId,
|
|
37
|
+
senderId: senderId ?? null,
|
|
38
|
+
senderName: senderId ? (lookup.names?.get(senderId) ?? null) : null,
|
|
39
|
+
timestamp: timestamp(raw.time) ?? new Date(0).toISOString(),
|
|
40
|
+
editedAt: timestamp(raw.updateTime),
|
|
41
|
+
text: text(raw.text) ?? "",
|
|
42
|
+
outgoing: lookup.viewerId === undefined || senderId === undefined ? null : senderId === lookup.viewerId,
|
|
43
|
+
attachments: attachments(raw.attaches),
|
|
44
|
+
...linked(raw.link, lookup),
|
|
45
|
+
reactions: historyReactions(raw.reactionInfo),
|
|
46
|
+
...scheduled(raw.delayedAttributes),
|
|
47
|
+
providerMetadata: { ...counted(raw.stats).providerMetadata, graph: rankingGraph(raw) },
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
const rankingGraph = (raw) => {
|
|
51
|
+
const link = asRecord(raw.link);
|
|
52
|
+
if (link?.type === "REPLY") {
|
|
53
|
+
const messageId = asId(asRecord(link.message)?.id);
|
|
54
|
+
const chatId = asId(link.chatId);
|
|
55
|
+
return { version: 1, ...(messageId && chatId ? { reply: { chatId, messageId } } : {}) };
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
version: 1,
|
|
59
|
+
...(asId(raw.id) !== undefined && typeof raw.time === "number" ? { reply: null } : {}),
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
const counted = (value) => {
|
|
63
|
+
const views = asRecord(value)?.views;
|
|
64
|
+
return typeof views === "number" ? { providerMetadata: { views } } : {};
|
|
65
|
+
};
|
|
66
|
+
/** Only with `totalCount`: other chats' history sends `{}` whatever the reactions are (measured 2026-09-23). */
|
|
67
|
+
const historyReactions = (value) => {
|
|
68
|
+
const info = asRecord(value);
|
|
69
|
+
return info?.totalCount === undefined ? null : toReactions(info);
|
|
70
|
+
};
|
|
71
|
+
const scheduled = (value) => {
|
|
72
|
+
const at = timestamp(asRecord(value)?.timeToFire);
|
|
73
|
+
return at ? { scheduledFor: at } : {};
|
|
74
|
+
};
|
|
75
|
+
/** Measured 2026-09-22: `link: { type: "REPLY" | "FORWARD", chatId, message: { id, sender, text, time, attaches } }`. */
|
|
76
|
+
const linked = (value, lookup) => {
|
|
77
|
+
const link = asRecord(value);
|
|
78
|
+
const quoted = asRecord(link?.message);
|
|
79
|
+
const message = quoted ? toQuoted(quoted, lookup) : null;
|
|
80
|
+
return {
|
|
81
|
+
replyTo: link?.type === "REPLY" ? message : null,
|
|
82
|
+
forwardedFrom: link?.type === "FORWARD" ? message : null,
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
const toQuoted = (raw, lookup) => {
|
|
86
|
+
const senderId = asId(raw.sender) ?? null;
|
|
87
|
+
return {
|
|
88
|
+
id: asId(raw.id) ?? "",
|
|
89
|
+
senderId,
|
|
90
|
+
senderName: senderId ? (lookup.names?.get(senderId) ?? null) : null,
|
|
91
|
+
timestamp: timestamp(raw.time),
|
|
92
|
+
text: text(raw.text) ?? "",
|
|
93
|
+
attachments: attachments(raw.attaches),
|
|
94
|
+
outgoing: lookup.viewerId === undefined || senderId === null ? null : senderId === lookup.viewerId,
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
/** `lastMessagedAt` is always `null` here: MAX puts it on the chat, and only the store has both. */
|
|
98
|
+
export const toContact = (raw) => ({
|
|
99
|
+
id: asId(raw.id) ?? "",
|
|
100
|
+
name: displayName(raw.names) ?? text(raw.name),
|
|
101
|
+
username: text(raw.link),
|
|
102
|
+
description: text(raw.description),
|
|
103
|
+
lastMessagedAt: null,
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* One entry of opcode 59 `MEMBER`: `{contact, presence: {seen, status?}, readMark}` (measured
|
|
107
|
+
* 2026-09-27). The unit of `seen` and `registrationTime` was not seen, so both are read either way.
|
|
108
|
+
*/
|
|
109
|
+
export const toGroupMember = (raw) => {
|
|
110
|
+
const contact = asRecord(raw.contact) ?? {};
|
|
111
|
+
const { id, name, username } = toContact(contact);
|
|
112
|
+
return {
|
|
113
|
+
id,
|
|
114
|
+
name,
|
|
115
|
+
username,
|
|
116
|
+
registeredAt: timestamp(inMilliseconds(contact.registrationTime)),
|
|
117
|
+
lastSeenAt: timestamp(inMilliseconds(asRecord(raw.presence)?.seen)),
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* One `CONTACT_INFO` contact as `contacts profile` shows it. MAX tells when the account was made and
|
|
122
|
+
* whether it has a photo; `options` naming `BOT` marks a bot (measured 2026-10-08, `pnpm probe:bot-link info`).
|
|
123
|
+
*/
|
|
124
|
+
export const toProfileFacts = (raw, chats) => {
|
|
125
|
+
const { id, name, username, description } = toContact(raw);
|
|
126
|
+
const registered = timestamp(inMilliseconds(raw.registrationTime));
|
|
127
|
+
return {
|
|
128
|
+
id,
|
|
129
|
+
name,
|
|
130
|
+
usernames: username ? [username] : [],
|
|
131
|
+
bio: description,
|
|
132
|
+
...(raw.phone === undefined || raw.phone === null ? {} : { phone: String(raw.phone) }),
|
|
133
|
+
flags: Array.isArray(raw.options) ? { bot: raw.options.includes("BOT") } : {},
|
|
134
|
+
...(registered ? { registered: { at: registered, source: "max", precision: "day" } } : {}),
|
|
135
|
+
hasPhoto: raw.photoId !== undefined && raw.photoId !== null,
|
|
136
|
+
chats,
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
/** One person's entry of opcode 35 `{seen, status?}`; `status` 1 is online in the tab's code, never measured. */
|
|
140
|
+
export const toSeen = (raw) => {
|
|
141
|
+
if (raw?.status === 1)
|
|
142
|
+
return "online";
|
|
143
|
+
return timestamp(inMilliseconds(raw?.seen)) ?? undefined;
|
|
144
|
+
};
|
|
145
|
+
/** Seconds and milliseconds since 1970 differ by three orders: before 2001 in ms is a time in seconds. */
|
|
146
|
+
const inMilliseconds = (value) => {
|
|
147
|
+
const n = count(value);
|
|
148
|
+
if (n === null)
|
|
149
|
+
return null;
|
|
150
|
+
return n < 1e12 ? n * 1000 : n;
|
|
151
|
+
};
|
|
152
|
+
export const toProfile = (raw) => {
|
|
153
|
+
const contact = asRecord(raw.contact) ?? raw;
|
|
154
|
+
return {
|
|
155
|
+
id: asId(contact.id) ?? "",
|
|
156
|
+
name: displayName(contact.names) ?? text(contact.name),
|
|
157
|
+
// The login's own profile carries `phone` as a bare integer (measured 2026-09-24).
|
|
158
|
+
phone: phone(contact.phones) ?? text(contact.phone) ?? digits(contact.phone),
|
|
159
|
+
description: text(contact.description),
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
export const toFolder = (raw) => ({
|
|
163
|
+
id: text(raw.id) ?? "",
|
|
164
|
+
title: text(raw.title) ?? "",
|
|
165
|
+
chatIds: (Array.isArray(raw.include) ? raw.include : []).map(asId).filter((id) => id !== undefined),
|
|
166
|
+
});
|
|
167
|
+
export const toSession = (raw) => ({
|
|
168
|
+
current: raw.current === true,
|
|
169
|
+
client: text(raw.client),
|
|
170
|
+
device: text(raw.info),
|
|
171
|
+
location: text(raw.location),
|
|
172
|
+
lastActiveAt: timestamp(raw.time),
|
|
173
|
+
});
|
|
174
|
+
/** A call in the history 163 answers (measured 2026-10-08); `HUNGUP` is one that was picked up, as the web client reads it. */
|
|
175
|
+
export const toCallRecord = (raw, self) => {
|
|
176
|
+
const callerId = asId(raw.callerId) ?? null;
|
|
177
|
+
const hangup = typeof raw.hangupType === "string" ? raw.hangupType : "";
|
|
178
|
+
const direction = callerId !== null && callerId === self ? "outgoing" : "incoming";
|
|
179
|
+
const duration = typeof raw.durationMs === "number" && raw.durationMs > 0 ? Math.round(raw.durationMs / 1000) : null;
|
|
180
|
+
return {
|
|
181
|
+
id: asId(raw.historyId) ?? asId(raw.callId) ?? "",
|
|
182
|
+
chatId: asId(raw.chatId) ?? null,
|
|
183
|
+
callerId,
|
|
184
|
+
direction,
|
|
185
|
+
outcome: hangup === "HUNGUP" ? "answered" : hangup === "MISSED" ? "missed" : "declined",
|
|
186
|
+
kind: raw.callType === "VIDEO" ? "video" : "audio",
|
|
187
|
+
at: timestamp(raw.time) ?? new Date(0).toISOString(),
|
|
188
|
+
durationSeconds: duration,
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
const audience = (value, fallback) => value === "ALL"
|
|
192
|
+
? "everyone"
|
|
193
|
+
: value === "CONTACTS"
|
|
194
|
+
? "contacts"
|
|
195
|
+
: value === "NOBODY" || value === "_NONE_"
|
|
196
|
+
? "nobody"
|
|
197
|
+
: fallback;
|
|
198
|
+
/**
|
|
199
|
+
* The privacy part of the settings LOGIN carries. A key left out means MAX's default, as the web client
|
|
200
|
+
* reads it (chunk `Cdo8IOYe`, 2026-10-08): everyone may find, call and invite; contacts see the number.
|
|
201
|
+
*/
|
|
202
|
+
export const toPrivacy = (user) => ({
|
|
203
|
+
findByPhone: audience(user.SEARCH_BY_PHONE, "everyone"),
|
|
204
|
+
phoneNumber: audience(user.PHONE_NUMBER_PRIVACY, "contacts"),
|
|
205
|
+
calls: audience(user.INCOMING_CALL, "everyone"),
|
|
206
|
+
chatInvites: audience(user.CHATS_INVITE, "everyone"),
|
|
207
|
+
hideOnline: user.HIDDEN === true,
|
|
208
|
+
});
|
|
209
|
+
const MAX_AUDIENCE = { everyone: "ALL", contacts: "CONTACTS", nobody: "NOBODY" };
|
|
210
|
+
/** The other way: only the settings named, as MAX names them. MAX finds an account by number for everyone or contacts only. */
|
|
211
|
+
export const fromPrivacy = (change) => {
|
|
212
|
+
if (change.findByPhone === "nobody")
|
|
213
|
+
throw new CliError("validation_error", "MAX lets everyone or only contacts find the account by its number, not nobody");
|
|
214
|
+
return Object.fromEntries(Object.entries({
|
|
215
|
+
SEARCH_BY_PHONE: change.findByPhone && MAX_AUDIENCE[change.findByPhone],
|
|
216
|
+
PHONE_NUMBER_PRIVACY: change.phoneNumber && MAX_AUDIENCE[change.phoneNumber],
|
|
217
|
+
INCOMING_CALL: change.calls && MAX_AUDIENCE[change.calls],
|
|
218
|
+
CHATS_INVITE: change.chatInvites && MAX_AUDIENCE[change.chatInvites],
|
|
219
|
+
HIDDEN: change.hideOnline,
|
|
220
|
+
}).filter(([, value]) => value !== undefined));
|
|
221
|
+
};
|
|
222
|
+
export const toStickerSet = (raw) => ({
|
|
223
|
+
id: asId(raw.id) ?? "",
|
|
224
|
+
title: typeof raw.name === "string" ? raw.name : "",
|
|
225
|
+
count: Array.isArray(raw.stickers) ? raw.stickers.length : 0,
|
|
226
|
+
link: typeof raw.link === "string" && raw.link !== "" ? raw.link : null,
|
|
227
|
+
});
|
|
228
|
+
export const toSticker = (raw) => ({
|
|
229
|
+
id: asId(raw.id) ?? "",
|
|
230
|
+
setId: asId(raw.setId) ?? null,
|
|
231
|
+
emoji: Array.isArray(raw.tags) ? raw.tags.filter((tag) => typeof tag === "string") : [],
|
|
232
|
+
url: typeof raw.url === "string" && raw.url !== "" ? raw.url : null,
|
|
233
|
+
});
|
|
234
|
+
/** The names a login response carries, so a message can name its sender without another request. */
|
|
235
|
+
export const namesFrom = (contacts) => {
|
|
236
|
+
const names = new Map();
|
|
237
|
+
if (!Array.isArray(contacts))
|
|
238
|
+
return names;
|
|
239
|
+
for (const entry of contacts) {
|
|
240
|
+
const contact = asRecord(entry);
|
|
241
|
+
if (!contact)
|
|
242
|
+
continue;
|
|
243
|
+
const id = asId(contact.id);
|
|
244
|
+
const name = displayName(contact.names) ?? text(contact.name);
|
|
245
|
+
if (id && name)
|
|
246
|
+
names.set(id, name);
|
|
247
|
+
}
|
|
248
|
+
return names;
|
|
249
|
+
};
|
|
250
|
+
const asRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : undefined;
|
|
251
|
+
const text = (value) => (typeof value === "string" && value !== "" ? value : null);
|
|
252
|
+
const count = (value) => {
|
|
253
|
+
const asNumber = typeof value === "bigint" ? Number(value) : value;
|
|
254
|
+
return typeof asNumber === "number" && Number.isFinite(asNumber) ? asNumber : null;
|
|
255
|
+
};
|
|
256
|
+
/** MAX sends Unix milliseconds; output is ISO 8601, which sorts, parses and needs no timezone guess. */
|
|
257
|
+
const timestamp = (value) => {
|
|
258
|
+
const ms = count(value);
|
|
259
|
+
if (ms === null || ms <= 0)
|
|
260
|
+
return null;
|
|
261
|
+
const date = new Date(ms);
|
|
262
|
+
return Number.isNaN(date.getTime()) ? null : date.toISOString();
|
|
263
|
+
};
|
|
264
|
+
const chatKind = (value) => {
|
|
265
|
+
switch (typeof value === "string" ? value.toUpperCase() : "") {
|
|
266
|
+
case "DIALOG":
|
|
267
|
+
return "dialog";
|
|
268
|
+
case "CHAT":
|
|
269
|
+
return "group";
|
|
270
|
+
case "CHANNEL":
|
|
271
|
+
return "channel";
|
|
272
|
+
default:
|
|
273
|
+
return "unknown";
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* `names` is a list of `{name, type}`. The name the owner gave them (`CUSTOM`, measured 2026-09-27)
|
|
278
|
+
* wins, as in the app; then the full name; any name beats none.
|
|
279
|
+
*/
|
|
280
|
+
const displayName = (value) => {
|
|
281
|
+
if (!Array.isArray(value))
|
|
282
|
+
return null;
|
|
283
|
+
const entries = value.map(asRecord).filter((entry) => entry !== undefined);
|
|
284
|
+
const named = (type) => text(entries.find((entry) => entry.type === type)?.name);
|
|
285
|
+
return named("CUSTOM") ?? named("FULL_NAME") ?? text(entries[0]?.name);
|
|
286
|
+
};
|
|
287
|
+
const digits = (value) => typeof value === "number" || typeof value === "bigint" ? `+${value}` : null;
|
|
288
|
+
/** The last four digits only, unless the owner asks for the whole number (`NEED-209`). */
|
|
289
|
+
export const maskedProfile = (profile) => ({
|
|
290
|
+
...profile,
|
|
291
|
+
phone: profile.phone === null ? null : `***${profile.phone.replace(/\D/g, "").slice(-4)}`,
|
|
292
|
+
});
|
|
293
|
+
const phone = (value) => {
|
|
294
|
+
if (!Array.isArray(value))
|
|
295
|
+
return null;
|
|
296
|
+
const first = asRecord(value[0]);
|
|
297
|
+
const number = first?.number;
|
|
298
|
+
return text(number) ?? (typeof number === "number" || typeof number === "bigint" ? `+${number}` : null);
|
|
299
|
+
};
|
|
300
|
+
/** `reactionInfo` as the reaction request answers it (measured 2026-09-23). */
|
|
301
|
+
export const toReactions = (raw) => {
|
|
302
|
+
const counts = (Array.isArray(raw.counters) ? raw.counters : [])
|
|
303
|
+
.map(asRecord)
|
|
304
|
+
.filter((entry) => entry !== undefined)
|
|
305
|
+
.map((entry) => ({ reaction: text(entry.reaction) ?? "", count: count(entry.count) ?? 0 }));
|
|
306
|
+
return { counts, mine: text(raw.yourReaction), total: count(raw.totalCount) ?? 0 };
|
|
307
|
+
};
|
|
308
|
+
/**
|
|
309
|
+
* What an attachment is and where it lives — never its bytes. The link fields are the ones
|
|
310
|
+
* `pnpm probe:attachments` measured on 2026-09-22: `baseUrl` on a photo, `url` on a share. A file
|
|
311
|
+
* and a video have no link, only `fileId` and `videoId` (measured 2026-09-23). A service message is
|
|
312
|
+
* `CONTROL` with `event`, and `userIds` for `new`/`add` but a single `userId` for `remove`
|
|
313
|
+
* (`pnpm probe:control`, 2026-09-27).
|
|
314
|
+
*/
|
|
315
|
+
const attachments = (value) => {
|
|
316
|
+
if (!Array.isArray(value))
|
|
317
|
+
return [];
|
|
318
|
+
return value
|
|
319
|
+
.map(asRecord)
|
|
320
|
+
.filter((entry) => entry !== undefined)
|
|
321
|
+
.map((entry) => {
|
|
322
|
+
const url = text(entry.baseUrl) ?? text(entry.url);
|
|
323
|
+
const width = count(entry.width);
|
|
324
|
+
const height = count(entry.height);
|
|
325
|
+
const title = text(entry.title);
|
|
326
|
+
const name = text(entry.name);
|
|
327
|
+
const size = count(entry.size);
|
|
328
|
+
const fileId = asId(entry.fileId);
|
|
329
|
+
const videoId = asId(entry.videoId);
|
|
330
|
+
const event = text(entry.event);
|
|
331
|
+
const people = Array.isArray(entry.userIds)
|
|
332
|
+
? entry.userIds
|
|
333
|
+
: entry.userId === undefined
|
|
334
|
+
? undefined
|
|
335
|
+
: [entry.userId];
|
|
336
|
+
const userIds = people?.map(asId).filter((id) => id !== undefined);
|
|
337
|
+
const poll = entry._type === "POLL" ? toPoll(entry) : undefined;
|
|
338
|
+
const buttons = entry._type === "INLINE_KEYBOARD" ? toButtons(entry) : undefined;
|
|
339
|
+
return {
|
|
340
|
+
kind: typeof entry._type === "string" ? entry._type.toLowerCase() : "unknown",
|
|
341
|
+
...(url ? { url } : {}),
|
|
342
|
+
...(width !== null ? { width } : {}),
|
|
343
|
+
...(height !== null ? { height } : {}),
|
|
344
|
+
...(title ? { title } : {}),
|
|
345
|
+
...(name ? { name } : {}),
|
|
346
|
+
...(size !== null ? { size } : {}),
|
|
347
|
+
...(fileId ? { fileId } : {}),
|
|
348
|
+
...(videoId ? { videoId } : {}),
|
|
349
|
+
...(event ? { event } : {}),
|
|
350
|
+
...(userIds ? { userIds } : {}),
|
|
351
|
+
...(poll ? { poll } : {}),
|
|
352
|
+
...(buttons ? { buttons } : {}),
|
|
353
|
+
};
|
|
354
|
+
});
|
|
355
|
+
};
|
|
356
|
+
const BUTTON_KINDS = {
|
|
357
|
+
CALLBACK: "callback",
|
|
358
|
+
LINK: "link",
|
|
359
|
+
MESSAGE: "message",
|
|
360
|
+
CHAT: "chat",
|
|
361
|
+
REQUEST_CONTACT: "contact",
|
|
362
|
+
REQUEST_GEO_LOCATION: "location",
|
|
363
|
+
OPEN_APP: "app",
|
|
364
|
+
CLIPBOARD: "clipboard",
|
|
365
|
+
};
|
|
366
|
+
/** A bot's keyboard: `{callbackId, keyboard: {buttons: [[{type, text, payload, url, intent}]]}}` (measured 2026-10-08). */
|
|
367
|
+
export const toButtons = (entry) => {
|
|
368
|
+
const rows = asRecord(entry.keyboard)?.buttons;
|
|
369
|
+
return (Array.isArray(rows) ? rows : []).map((row) => (Array.isArray(row) ? row : []).map((raw) => {
|
|
370
|
+
const button = asRecord(raw) ?? {};
|
|
371
|
+
const kind = BUTTON_KINDS[String(button.type)] ?? "other";
|
|
372
|
+
const url = kind === "link" ? text(button.url) : null;
|
|
373
|
+
return { kind, text: text(button.text) ?? "", ...(url ? { url } : {}) };
|
|
374
|
+
}));
|
|
375
|
+
};
|
|
376
|
+
/** The bits of a poll's `settings`, as web.max.ru names them (bundle read 2026-09-24, `FIND-140`). */
|
|
377
|
+
const POLL_ANONYMOUS = 1;
|
|
378
|
+
const POLL_MULTIPLE = 2;
|
|
379
|
+
const POLL_REVOTE = 4;
|
|
380
|
+
export const POLL_CLOSED = 8;
|
|
381
|
+
const POLL_QUIZ = 16;
|
|
382
|
+
/** In `state.result[].options`: the owner voted for this answer. */
|
|
383
|
+
const ANSWER_VOTED = 1;
|
|
384
|
+
/**
|
|
385
|
+
* The newest shape measured: MAX makes every new poll version 2 (`FIND-247`), which web.max.ru
|
|
386
|
+
* does not show. A newer one is skipped, since an unknown shape is worse than none.
|
|
387
|
+
*/
|
|
388
|
+
const POLL_VERSION = 2;
|
|
389
|
+
export const toPoll = (entry) => {
|
|
390
|
+
const version = count(entry.version);
|
|
391
|
+
const id = asId(entry.pollId);
|
|
392
|
+
if (!id || (version !== null && version > POLL_VERSION))
|
|
393
|
+
return undefined;
|
|
394
|
+
const settings = count(entry.settings) ?? 0;
|
|
395
|
+
const state = asRecord(entry.state);
|
|
396
|
+
const results = new Map();
|
|
397
|
+
for (const raw of Array.isArray(state?.result) ? state.result : []) {
|
|
398
|
+
const result = asRecord(raw);
|
|
399
|
+
const answerId = asId(result?.answerId);
|
|
400
|
+
if (result && answerId)
|
|
401
|
+
results.set(answerId, result);
|
|
402
|
+
}
|
|
403
|
+
const answers = (Array.isArray(entry.answers) ? entry.answers : [])
|
|
404
|
+
.map(asRecord)
|
|
405
|
+
.filter((answer) => answer !== undefined)
|
|
406
|
+
.map((answer) => {
|
|
407
|
+
const answerId = asId(answer.answerId) ?? "";
|
|
408
|
+
const result = results.get(answerId);
|
|
409
|
+
return {
|
|
410
|
+
id: answerId,
|
|
411
|
+
text: typeof answer.text === "string" ? answer.text : "",
|
|
412
|
+
votes: count(result?.voteCount) ?? 0,
|
|
413
|
+
mine: ((count(result?.options) ?? 0) & ANSWER_VOTED) !== 0,
|
|
414
|
+
};
|
|
415
|
+
})
|
|
416
|
+
.filter((answer) => answer.id !== "");
|
|
417
|
+
return {
|
|
418
|
+
id,
|
|
419
|
+
question: typeof entry.title === "string" ? entry.title : "",
|
|
420
|
+
answers,
|
|
421
|
+
total: count(state?.total) ?? 0,
|
|
422
|
+
multiple: (settings & POLL_MULTIPLE) !== 0,
|
|
423
|
+
anonymous: (settings & POLL_ANONYMOUS) !== 0,
|
|
424
|
+
revote: (settings & POLL_REVOTE) !== 0,
|
|
425
|
+
closed: (settings & POLL_CLOSED) !== 0,
|
|
426
|
+
quiz: (settings & POLL_QUIZ) !== 0,
|
|
427
|
+
};
|
|
428
|
+
};
|
|
429
|
+
/** The settings bits a new poll is created with. */
|
|
430
|
+
export const pollSettings = ({ multiple = false, anonymous = false, revote = false, }) => (multiple ? POLL_MULTIPLE : 0) | (anonymous ? POLL_ANONYMOUS : 0) | (revote ? POLL_REVOTE : 0);
|
|
431
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/domain/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAgB,MAAM,sBAAsB,CAAA;AA0CzD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAY,EAAQ,EAAE,CAAC,CAAC;IAC7C,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IACtB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACnC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC9E,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;CAChD,CAAC,CAAA;AAEF,mGAAmG;AACnG,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,SAAS,EAAE,qBAAqB;IAChC,aAAa,EAAE,2BAA2B;IAC1C,cAAc,EAAE,qBAAqB;IACrC,kBAAkB,EAAE,kCAAkC;IACtD,cAAc,EAAE,8BAA8B;CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAa,EAAE;IACrD,2FAA2F;IAC3F,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAE,OAAO,CAAC,IAAI,CAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACzG,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAChD,CAAA;IAE7B,OAAO;QACL,GAAG,MAAM,CAAC,GAAG,CAAC;QACd,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;QACxE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACpB,QAAQ;KACT,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,MAAU,EAAE,MAAM,GAAe,EAAE,EAAW,EAAE;IACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAEjC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;QACtB,MAAM;QACN,QAAQ,EAAE,QAAQ,IAAI,IAAI;QAC1B,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QACnE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC3D,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QACvG,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QACtC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC;QAC7C,GAAG,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACnC,gBAAgB,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE;KACvF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,GAAY,EAAqD,EAAE;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IACzF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,KAAc,EAAqC,EAAE;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACzE,CAAC,CAAA;AAED,gHAAgH;AAChH,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAoB,EAAE;IAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAc,EAAiC,EAAE;IAClE,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAA;IACjD,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACvC,CAAC,CAAA;AAED,yHAAyH;AACzH,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,MAAkB,EAA8C,EAAE;IAChG,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACxD,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAChD,aAAa,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;KACzD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,MAAkB,EAAiB,EAAE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;IACzC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;QACtB,QAAQ;QACR,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QACnE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1B,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;KACnG,CAAA;AACH,CAAC,CAAA;AAED,oGAAoG;AACpG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAW,EAAE,CAAC,CAAC;IACnD,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IACtB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9C,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;IAClC,cAAc,EAAE,IAAI;CACrB,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAY,EAAe,EAAE;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAC3C,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IACjD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,QAAQ;QACR,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACjE,UAAU,EAAE,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;KACpE,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,KAA4B,EAAgB,EAAE;IACzF,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAClE,OAAO;QACL,EAAE;QACF,IAAI;QACJ,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;QACrC,GAAG,EAAE,WAAW;QAChB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAC7E,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,QAAQ,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAC3D,KAAK;KACN,CAAA;AACH,CAAC,CAAA;AAED,iHAAiH;AACjH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAwB,EAAwB,EAAE;IACvE,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACtC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,SAAS,CAAA;AAC1D,CAAC,CAAA;AAED,0GAA0G;AAC1G,MAAM,cAAc,GAAG,CAAC,KAAc,EAAiB,EAAE;IACvD,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IACtB,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC3B,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAW,EAAE;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;IAE5C,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAC1B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtD,mFAAmF;QACnF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5E,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;KACvC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,CAAC;IACjD,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IACtB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;IAC5B,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAY,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;CAC9G,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAkB,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI;IAC7B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACxB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC5B,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;CAClC,CAAC,CAAA;AAEF,+HAA+H;AAC/H,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAE,IAAoB,EAAc,EAAE;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;IACvE,MAAM,SAAS,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAClF,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpH,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;QACjD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;QAChC,QAAQ;QACR,SAAS;QACT,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QACvF,IAAI,EAAE,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QAClD,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACpD,eAAe,EAAE,QAAQ;KAC1B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,QAAkB,EAAY,EAAE,CAChE,KAAK,KAAK,KAAK;IACb,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,KAAK,KAAK,UAAU;QACpB,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;YACxC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAA;AAElB;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAa,EAAmB,EAAE,CAAC,CAAC;IAC5D,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;IACvD,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC;IAC5D,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;IAC/C,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;IACpD,UAAU,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;CACjC,CAAC,CAAA;AAEF,MAAM,YAAY,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAW,CAAA;AAEzF,+HAA+H;AAC/H,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAuB,EAAoC,EAAE;IACvF,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ;QACjC,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,+EAA+E,CAChF,CAAA;IACH,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC;QACb,eAAe,EAAE,MAAM,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QACvE,oBAAoB,EAAE,MAAM,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5E,aAAa,EAAE,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;QACzD,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QACpE,MAAM,EAAE,MAAM,CAAC,UAAU;KAC1B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACV,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAc,EAAE,CAAC,CAAC;IACzD,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IACtB,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IACnD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;CACxE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAW,EAAE,CAAC,CAAC;IACnD,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;IACtB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI;IAC9B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACtG,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;CACpE,CAAC,CAAA;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAiB,EAAmB,EAAE;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAc,CAAA;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IAE1C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7D,IAAI,EAAE,IAAI,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAuB,EAAE,CACvD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiB,CAAC,CAAC,CAAC,SAAS,CAAA;AAEvG,MAAM,IAAI,GAAG,CAAC,KAAc,EAAiB,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAE1G,MAAM,KAAK,GAAG,CAAC,KAAc,EAAiB,EAAE;IAC9C,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAClE,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;AACpF,CAAC,CAAA;AAED,wGAAwG;AACxG,MAAM,SAAS,GAAG,CAAC,KAAc,EAAiB,EAAE;IAClD,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IACvB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;IACzB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAY,EAAE;IAC5C,QAAQ,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7D,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,MAAM;YACT,OAAO,OAAO,CAAA;QAChB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAA;QAClB;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,KAAc,EAAiB,EAAE;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAC5F,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACxF,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACxE,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,KAAc,EAAiB,EAAE,CAC/C,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAE7E,0FAA0F;AAC1F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,CAAC;IAC3D,GAAG,OAAO;IACV,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;CAC1F,CAAC,CAAA;AAEF,MAAM,KAAK,GAAG,CAAC,KAAc,EAAiB,EAAE;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAA;IAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACzG,CAAC,CAAA;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAa,EAAE;IACrD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,GAAG,CAAC,QAAQ,CAAC;SACb,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SACxD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAA;AACpF,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,KAAc,EAAgB,EAAE;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,OAAO,KAAK;SACT,GAAG,CAAC,QAAQ,CAAC;SACb,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SACxD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpB,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAY,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;QAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAChF,OAAO;YACL,IAAI,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7E,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,YAAY,GAA+B;IAC/C,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,eAAe,EAAE,SAAS;IAC1B,oBAAoB,EAAE,UAAU;IAChC,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,WAAW;CACvB,CAAA;AAED,2HAA2H;AAC3H,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAc,EAAE;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAA;QACzD,MAAM,GAAG,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACrD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IACzE,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAED,sGAAsG;AACtG,MAAM,cAAc,GAAG,CAAC,CAAA;AACxB,MAAM,aAAa,GAAG,CAAC,CAAA;AACvB,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAA;AAC5B,MAAM,SAAS,GAAG,EAAE,CAAA;AACpB,oEAAoE;AACpE,MAAM,YAAY,GAAG,CAAC,CAAA;AAEtB;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,CAAA;AAEtB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAoB,EAAE;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC;QAAE,OAAO,SAAS,CAAA;IAEzE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC1C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACvC,IAAI,MAAM,IAAI,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,GAAG,CAAC,QAAQ,CAAC;SACb,MAAM,CAAC,CAAC,MAAM,EAAqB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;SAC3D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACpC,OAAO;YACL,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACxD,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;YACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;SAC3D,CAAA;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAEvC,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC5D,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;QAC/B,QAAQ,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC;QAC1C,SAAS,EAAE,CAAC,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;QAC5C,MAAM,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;QACtC,IAAI,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;KACnC,CAAA;AACH,CAAC,CAAA;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,GAKf,EAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
|