MarkTechPosthttps://www.marktechpost.com/ An Artificial Intelligence News PlatformThu, 11 Jun 2026 22:21:39 +0000en-US hourly 1 https://wordpress.org/?v=7.0https://www.marktechpost.com/wp-content/uploads/2022/04/cropped-Favicon-512-x-512-1-1-32x32.pngMarkTechPosthttps://www.marktechpost.com/ 3232127842392Perplexity Moves Deep Research Into Computer, Routing Research Subtasks Across 20+ Frontier Models For Reports, Decks, And Dashboardshttps://www.marktechpost.com/2026/06/11/perplexity-moves-deep-research-into-computer-routing-research-subtasks-across-20-frontier-models-for-reports-decks-and-dashboards/
Thu, 11 Jun 2026 22:21:32 +0000https://www.marktechpost.com/?p=80455Deep Research now lives inside Perplexity Computer, breaking hard questions into subtasks and routing across 20+ frontier models.
The post Perplexity Moves Deep Research Into Computer, Routing Research Subtasks Across 20+ Frontier Models For Reports, Decks, And Dashboards appeared first on MarkTechPost.
]]>Perplexity has moved Deep Research into Computer, its multi-model orchestration system. The upgrade improves accuracy, depth of analysis, and citation quality. Deep Research now breaks hard questions into subtasks and routes them across 20+ frontier models. It returns work-ready reports, decks, and dashboards, all inside Computer.
Deep Research in Computer
Deep Research is a mode that runs many searches, reads sources, and writes a cited report. The new version lives inside Perplexity Computer, which launched in late February 2026. Computer is a cloud system that coordinates up to 20 AI models in one workflow. It is model-agnostic, with Opus 4.6 as its core reasoning engine. Sub-agents handle specialized work, such as Gemini for deep research tasks.
Deep Research in Computer is built on two parts: the Agent Search SDK and Search as Code. With one complex question, it builds a research plan automatically. It then finds primary sources across hundreds of sites and cites every claim.
Search as Code: How It Works
The model writes code that assembles the search itself. That code runs thousands of retrieval steps in parallel, tailored to each question. The script runs in a sandbox and calls Perplexity’s Agentic Search SDK. The SDK exposes search primitives such as filtering, deduplication, and reranking. This differs from a fixed pipeline that runs the same steps every time. Code-driven search lets the system branch, compare, and refine as it learns.
Search as Code is rolling out through both Computer and the Agent API. So developers can reach the same agentic search stack programmatically. Computer also reads your files alongside the live web. You can pull in a PDF or spreadsheet for internal context. It then cross-references that against census data, Statista, and other sources.
A Working Developer Example
Deep Research in Computer is a consumer feature for Perplexity Max users. Developers reach the same stack through the pay-as-you-go Agent API. The official SDK ships a deep-research preset, shown below.
Copy CodeCopiedUse a different Browser
The endpoint is POST https://api.perplexity.ai/v1/agent. It also accepts POST /v1/responses for OpenAI SDK compatibility.
Benchmark
Perplexity published before-and-after numbers comparing legacy Deep Research with the Computer version. The gains are largest on agentic browsing, where the system must navigate many pages.
| Benchmark | Source | Legacy Deep Research | Deep Research in Computer |
|---|---|---|---|
| Humanity’s Last Exam | Center for AI Safety & Scale AI | 36.4% | 50.5% |
| BrowseComp | OpenAI | 40.7% | 83.8% |
| DeepSearchQA | Google DeepMind | 81.9% | 85.0% |
BrowseComp tests an agent’s ability to find hard-to-locate information through browsing. The jump from 40.7% to 83.8% is the largest gain shown. Humanity’s Last Exam covers expert questions across many academic subjects. DeepSearchQA already sat high, so its gain is smaller but positive.
Use Cases, With Examples
Perplexity ships starter tasks that show the intended scope.
- Finance: compare cash flow and profit margins of major AI chip companies over five years.
- Legal: map how US and European data-privacy laws differ into one comparison table.
- Healthcare: synthesize clinical-trial evidence on whether weight-loss drugs improve heart health.
- Technology: benchmark leading models on reasoning ability, cost, and context length.
Each task ends in a deliverable. You can turn a report into a brief, a deck, or a live spreadsheet. Computer reads and writes inside the file, not beside it. It shows a preview before any change lands, which you approve or reject.
How It Picks Models
Computer routes each subtask to the model best suited for it. A legal reasoning model handles contract review. A data model handles spreadsheet variance checks. A writing model handles the final draft. Premium data sources back the answers, including PitchBook and CB Insights. Legal data is currently in preview.
Strengths and Limitations
Strengths:
- Code-driven search runs thousands of retrieval steps in parallel per question.
- Large measured gains on agentic browsing, led by the BrowseComp result.
- Reads internal files and the live web, citing every claim inline.
- Produces ready deliverables: reports, briefs, decks, dashboards, and live spreadsheets.
Limitations:
- The benchmark numbers are first-party, so independent verification still matters.
- The in-Computer feature centers on Perplexity Max, not a free tier.
- Premium-source coverage varies, and legal data remains in preview.
- Outputs still need human review, since “cited” does not always mean correct.
Key Takeaways
- Perplexity moved Deep Research into Computer, routing research subtasks across 20+ frontier models.
- “Search as Code” lets the model write code that runs thousands of retrieval steps in parallel.
- BrowseComp accuracy jumped from 40.7% to 83.8%; Humanity’s Last Exam rose 36.4% to 50.5%.
- It reads your files and the live web, citing every claim across reports, decks, and dashboards.
- Developers can reach the same agentic search stack through the pay-as-you-go Agent API.
Check out the Technical details. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.? Connect with us
]]>80455xAI Ships Grok Build Plugin Marketplace With MongoDB, Vercel, Sentry, Chrome DevTools, Cloudflare, and Superpowers Plugins at Launchhttps://www.marktechpost.com/2026/06/11/xai-ships-grok-build-plugin-marketplace-with-mongodb-vercel-sentry-chrome-devtools-cloudflare-and-superpowers-plugins-at-launch/
Thu, 11 Jun 2026 21:30:31 +0000https://www.marktechpost.com/?p=80452Grok Build's in-terminal marketplace bundles skills, agents, hooks, and MCP servers, with commit-SHA verification on every remote plugin.
The post xAI Ships Grok Build Plugin Marketplace With MongoDB, Vercel, Sentry, Chrome DevTools, Cloudflare, and Superpowers Plugins at Launch appeared first on MarkTechPost.
]]>Today, xAI shipped the Grok Build Plugin Marketplace. It is a built-in catalog of plugins for Grok Build, the company’s terminal coding agent. A plugin bundles skills, slash commands, agents, hooks, MCP servers, and LSPs into one package. You browse, install, and update these packages without leaving the terminal.
Plugin Marketplace
Grok Build is xAI’s coding agent and CLI for software engineering work. The marketplace adds a discovery and distribution layer on top. Before this, developers wired up each integration one at a time. Now a single command pulls a complete bundle into the agent. The catalog lives in the open repo xai-org/plugin-marketplace on GitHub. That repo is an index. It points at plugin sources so Grok Build can fetch them.
Inside a Plugin
A plugin is a directory bundling any combination of six component types. Each type maps to a specific file or folder. The table below lists them.
| Component | Location | Purpose |
|---|---|---|
| Skills | skills/ |
SKILL.md capabilities |
| Commands | commands/ |
Slash commands |
| Agents | agents/ |
Subagent definitions |
| Hooks | hooks/hooks.json |
Lifecycle hooks |
| MCP servers | .mcp.json |
MCP server configs |
| LSP servers | .lsp.json |
Language server configs |
An optional plugin.json manifest adds metadata or overrides component paths. So one install can extend the agent in several ways at once.
How Installation Works
Inside Grok Build, type /marketplace to browse the catalog. Press i to install a selected plugin. You can also run commands directly from the shell:
Copy CodeCopiedUse a different Browser
The install command carries a --trust flag. That matters because plugins can execute code and access data on your system.
Launch Plugins and Use Cases
The marketplace opens with six plugins from partners across the stack. Each targets a concrete workflow.
- MongoDB — explore data, manage collections, and optimize queries.
- Vercel — manage deployments, check build status, and configure domains.
- Sentry — analyze stack traces and debug production errors.
- Chrome DevTools — control a live browser, record performance traces, and inspect network requests.
- Cloudflare — skills for Workers, Durable Objects, and more.
- Superpowers — popular agent-driven workflows.
Example: a data scientist hits a slow MongoDB query. They install the MongoDB plugin, then ask the agent to optimize it. Example: a frontend engineer installs Chrome DevTools to inspect network requests during a failing render. Example: an on-call engineer installs Sentry to triage a stack trace from production.
The Security Model: SHA Pinning
Every remote plugin pins a full 40-character lowercase commit SHA. Grok Build re-verifies git rev-parse HEAD == sha after cloning. Without a pin, a force-push or repo compromise could ship new code silently. The pin closes that path at install time. The repo also separates first-party plugins, maintained by xAI, from third-party ones. xAI states it does not author, control, or verify third-party plugins. They ship AS-IS, and you install at your own risk.
Publishing Your Own Plugin
The catalog is open to contributions. To add a plugin, edit .grok-plugin/marketplace.json and open a pull request. A remote entry looks like this:
Copy CodeCopiedUse a different Browser
A generated plugin-index.json records each plugin’s components. You never hand-edit that file. Regenerate it with python3 scripts/generate-plugin-index.py. CI runs the same script with --check and fails on stale files.
How It Compares
The bundling idea echoes other agent tooling, such as Claude Code. The table maps the marketplace against a raw MCP setup.
| Capability | Grok Build Marketplace | Raw MCP integration |
|---|---|---|
| Bundles skills, commands, agents, hooks, MCP, LSP | Yes | No, MCP servers only |
| In-terminal browse and install | Yes, via /marketplace |
Manual config edits |
| Commit-SHA pin verification | Yes, enforced at install | Not built in |
| Open PR-based public catalog | Yes | Not applicable |
| Update mechanism | grok plugin update flow |
Manual |
Note: the table reflects documented design, not a hands-on benchmark.
Strengths and Trade-offs
Strengths
- One install adds skills, commands, agents, hooks, MCP, and LSP support.
- SHA pinning gives a concrete supply-chain guard for executable code.
- The open catalog lowers the bar to contribute a plugin.
Trade-offs
- Grok Build access still sits behind paid SuperGrok and X Premium Plus tiers.
- The catalog is small at launch, with six plugins.
- xAI verifies the pin, not plugin behavior, so trust still falls on you.
The Grok Build Plugin Marketplace is now in beta.
Build with MongoDB, Vercel, Sentry, Cloudflare, and Chrome DevTools plugins from your terminal.
Read more https://t.co/ShPeozXSxA pic.twitter.com/pOFttEuwdF
— xAI (@xai) June 11, 2026
Key Takeaways
- xAI launched the Grok Build Plugin Marketplace on June 11, 2026, built into the terminal.
- One plugin bundles skills, slash commands, agents, hooks, MCP servers, and LSPs into a single install.
- Launch catalog ships six plugins: MongoDB, Vercel, Sentry, Chrome DevTools, Cloudflare, and Superpowers.
- Every remote plugin pins a 40-character commit SHA, which Grok Build re-verifies after cloning.
- The catalog is open via pull request, but xAI does not verify third-party plugins.
Check out the Technical details and GitHub Page. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80452Nous Research Ships Hermes Agent Profile Builder: Identity, Model, Skills, and MCP Servers in One Dashboard Flowhttps://www.marktechpost.com/2026/06/11/nous-research-ships-hermes-agent-profile-builder-identity-model-skills-and-mcp-servers-in-one-dashboard-flow/
Thu, 11 Jun 2026 09:53:52 +0000https://www.marktechpost.com/?p=80441The Hermes Agent dashboard now builds complete agent profiles in one flow, replacing multi-step CLI setup for users.
The post Nous Research Ships Hermes Agent Profile Builder: Identity, Model, Skills, and MCP Servers in One Dashboard Flow appeared first on MarkTechPost.
]]>Nous Research has shipped a Profile Builder for Hermes Agent. It lives inside the project’s local web dashboard. Standing up a distinct agent used to mean several CLI steps. The builder now walks you through one guided flow.
In that flow you define an agent’s identity. You pick a model and provider. You choose built-in and optional skills. You install skills from the hub. You attach MCP servers.
Hermes Agent is Nous Research’s open-source, self-improving agent. It runs on the CLI, a desktop app, and messaging platforms. Profiles were previously assembled mostly through terminal commands. The Profile Builder brings those pieces into a browser form.
Profile Builder
A profile in Hermes is a separate home directory. Each profile holds its own config.yaml, .env, and SOUL.md. It also keeps separate memory, sessions, skills, cron jobs, and a state database.
Profiles let you run isolated agents on one machine. A coding agent and a research agent never share state. This is the unit the builder produces.
You launch the dashboard by running hermes dashboard. It opens at http://127.0.0.1:9119 in your browser. The default bind is loopback, so no data leaves localhost. The builder collects the same inputs the CLI profile commands accept. It then writes them into the profile’s files.
The Fields the Builder Configures
The builder gathers five groups of settings in one place:
- First is identity, a name and a description. The name also becomes a shell command alias. Create a profile named
coderand you getcoder chat. Deeper personality lives in the profile’sSOUL.mdfile. - Second is the model and provider . Hermes supports Nous Portal, OpenRouter, NVIDIA, OpenAI, and more. You can also point at your own OpenAI-compatible endpoint.
- Third is built-in skills, toggled on or off per profile.
- Fourth is Skills Hub installs, pulled from external catalogs by identifier.
- Fifth is MCP servers, added by URL or by local command.
Two of these terms deserve a short explanation.
Skills are SKILL.md files with a name, a description, and a procedure. The agent reads short descriptions cheaply. It loads a skill’s full content only when a task needs it. So adding many skills does not bloat every request.
MCP servers expose external tools through the Model Context Protocol. Hermes accepts HTTP servers via a URL. It also accepts stdio servers via a local command. A Nous-approved catalog offers one-click installs, prompting inline for any keys.
GUI Flow vs the CLI Sequence
The builder does not replace the CLI. It mirrors it in a form. The table below maps each step to its command equivalent.
| Step | Profile Builder (dashboard) | CLI equivalent |
|---|---|---|
| Create and name | Name field | hermes profile create coder |
| Description | Description field | --description "..." or hermes profile describe |
| Model and provider | Model picker | coder config set model <id> |
| Built-in skills | Toggles | coder skills list / toggle |
| Skills Hub install | Search and install | coder skills install <slug> |
| MCP servers | Add or catalog install | edit mcp_servers / coder mcp install |
Both paths edit the same profile directory. The builder is the lower-friction entry point. The CLI remains the scriptable one.
Use Cases With Examples
- The first use case is a focused coding assistant. Give it a code-aware model and a filesystem MCP server. Add Git and testing skills. Keep its memory scoped to one project.
- The second is a research agent. Pair a capable model with web-extract skills. Its findings stay separate from your other agents. Cloning the profile later preserves that separation.
- The third is an operations bot. Attach a messaging channel and schedule cron reports. Each profile runs its own gateway and bot token. Token locks block two profiles from sharing a token by accident.
In each case, the builder produces one isolated agent. You can run several without state collisions.
What the Builder Writes
The builder edits files the CLI already reads. Model and provider land in the profile’s config.yaml. MCP servers populate the mcp_servers block in that file. API keys go to the profile’s .env.
The equivalent CLI sequence for a research profile looks like this:
Copy CodeCopiedUse a different Browser
A matching config.yaml for that profile. Note that mcp_servers is a map keyed by server name, not a list:
Copy CodeCopiedUse a different Browser
A remote HTTP MCP server uses url and headers instead of command:
Copy CodeCopiedUse a different Browser
Reaching the builder requires the dashboard extra. The base install ships without the HTTP stack.
Install it with one command:
Copy CodeCopiedUse a different Browser
Strengths and Limitations
Strengths:
- One flow replaces several CLI steps for a new profile.
- Identity, model, skills, and MCP sit in one place.
- Output stays in standard
config.yamland.envfiles. - The dashboard runs locally and binds to loopback by default.
- The catalog handles MCP and Skills Hub installs inline.
Limitations:
- Profiles do not sandbox filesystem access on the local backend.
- A non-loopback bind fails closed unless an auth provider is configured.
- Skill and MCP changes take effect on the next session or gateway restart.
- The builder surfaces controls that also live on separate dashboard pages.
Marktechpost’s Interactive Explainer
Nous Research · Hermes Agent
The Profile Builder, explained
DEMOsimulation, not the live product
Profile name
Becomes a command → researcher chat
Description
Each profile is its own isolated home directory.
ProviderOpenRouterNous PortalNVIDIAOpenAI-compatible (custom)
Model id
Switch any time with hermes model.
Built-in toolsets
Off → written to agent.disabled_toolsets.
MCP servers
FilesystemGitHubHTTP+ Add
mcp_servers is a map keyed by server name.
~/.hermes/profiles/researcher/config.yamlCopy
Marktech postAI research and tooling, decoded for builders. Independent demo by Marktechpost — not affiliated with Nous Research. marktechpost.com →
Check out the following Hermes resources: Web Dashboard — Hermes Agent docs, Configuration — Hermes Agent docs, Profiles: Running Multiple Agents — Hermes Agent docs, MCP Config Reference — Hermes Agent docs, and Quickstart — Hermes Agent docs.
Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80441Meet ‘North Mini Code’: Cohere’s 30B Open-Weight Mixture-of-Experts Model With 3B Active Parameters for Agentic Codinghttps://www.marktechpost.com/2026/06/11/meet-north-mini-code-coheres-30b-open-weight-mixture-of-experts-model-with-3b-active-parameters-for-agentic-coding/
Thu, 11 Jun 2026 08:33:27 +0000https://www.marktechpost.com/?p=80438Cohere's first developer coding model is a 30B mixture-of-experts running on a single H100 with 256K context length.
The post Meet ‘North Mini Code’: Cohere’s 30B Open-Weight Mixture-of-Experts Model With 3B Active Parameters for Agentic Coding appeared first on MarkTechPost.
]]>This week, Cohere AI team shipped its first developer-facing coding model named ‘ North Mini Code‘. ‘North Mini Code’ is open-weight and focused at software engineers. It is a mixture-of-experts (MoE) model with 30B total parameters. Only 3B of those parameters activate per token.
The release is positioned around “sovereign” AI. The idea is simple: run capable models on your own terms. Small, efficient coding models let teams self-host without large GPU clusters. North Mini Code targets that gap directly.
North Mini Code
North Mini Code is a 30B-A3B parameter model. The A3B stands for three billion active parameters per forward pass. Cohere optimized it for three jobs: code generation, agentic software engineering, and terminal tasks. The model is text-in, text-out. There is no image or video input.
The context window is 256K tokens. Maximum output length is 64K tokens. Cohere lists a minimum hardware bar of one H100 at FP8. Weights ship under Apache 2.0 on Hugging Face. You can also reach it through the Cohere API, Model Vault, and OpenRouter.
| Field | North-Mini-Code-1.0 |
|---|---|
| License | Apache 2.0 |
| Model size | 30B total; 3B active |
| Context length | 256K total; 64K max generation |
| Optimized for | Code generation, agentic software engineering, terminal tasks |
| Availability | Hugging Face, Cohere API, Cohere Model Vault, OpenRouter |
| Hardware (minimum) | 1× H100 @ FP8 |
The Architecture
North Mini Code is a decoder-only Transformer with sparse MoE layers. Its attention interleaves two types in a 3:1 ratio. Sliding-window attention uses RoPE for positions. Global attention uses no positional embeddings at all. The feed-forward block holds 128 experts. Eight experts activate per token. Each expert is an FFN with SwiGLU activation.
The router applies a sigmoid before top-k selection. A single dense layer sits before the sparse layers. That mix keeps active compute small while widening total capacity. Cohere released the weights in BF16.
Post-training ran in two phases. First came two-stage cascaded supervised fine-tuning (SFT). Then came reinforcement learning with verifiable rewards (RLVR). The post-training focused on agentic coding. The model also supports interleaved thinking and native tool use.
Benchmarks
Cohere reports a 33.4 on the Artificial Analysis Coding Index. It describes this as a competitive position among similarly sized models. The company evaluated on SWE-Bench Verified, SWE-Bench Pro, and Terminal-Bench v2. It also used Terminal-Bench Hard, SciCode, and LiveCodeBench v6.
The methodology is specific. SWE-Bench used the SWE-agent harness v1.1.0. Terminal-Bench v2 used a simple ReAct harness with one terminal tool. Terminal-Bench Hard used the Terminus-2 harness. Each benchmark ran with three seeds, then averaged. Sampling used temperature 1.0 and top_p 0.95.
The Speed
In Cohere’s internal tests, North Mini Code reached up to 2.8x higher output throughput. That held at identical concurrency and hardware. It also showed a 30% edge in inter-token latency. Time-to-first-token was closer between the two. Devstral Small 2 kept a slight TTFT lead.
| Metric | North Mini Code vs Devstral Small 2 |
|---|---|
| Output throughput | Up to 2.8x higher (same concurrency and hardware) |
| Inter-token latency | 30% better for North Mini Code |
| Time-to-first-token | Slightly behind Devstral Small 2 |
Use Cases With Examples
Cohere built North Mini Code for agentic workflows.
Three patterns stand out in its own framing:
- Sub-agent orchestration: A main agent delegates subtasks to helpers. Example: one agent writes unit tests while another fixes failing code.
- Systems architecture mapping: The model reads a repository and sketches its structure. Example: tracing how services call each other before a large refactor.
- Code reviews: The model scans a diff for problems. Example: flagging an unguarded null dereference before a merge.
Terminal tasks fit the model as well. Example: listing files, running a build, then parsing the output for errors.
Getting Started
The fastest path is Hugging Face Transformers. Install Transformers from source for this model. Recommended sampling is temperature 1.0 and top_p 0.95.
Copy CodeCopiedUse a different Browser
For serving, vLLM works. You need vLLM main plus Cohere’s melody library. Accurate response parsing depends on it.
Copy CodeCopiedUse a different Browser
Quantized builds exist for Ollama, LM Studio, and llama.cpp. You can also try the model before downloading. Cohere offers free access through OpenCode and a hosted Hugging Face Space.
Key Takeaways
- Cohere’s first coding model, North Mini Code, is a 30B mixture-of-experts that activates just 3B parameters per token.
- It runs on a single H100 at FP8, with 256K context and 64K max output.
- Weights ship under Apache 2.0, though the Hugging Face card adds a non-commercial note.
- Cohere official release reports 33.4 on the Artificial Analysis Coding Index, and up to 2.8x throughput over Devstral Small 2.
- Built for agentic coding—sub-agent orchestration, architecture mapping, code reviews with native tool use
Marktechpost’s Interactive Explainer
PCFkb2N0eXBlIGh0bWw CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPk5vcnRoIE1pbmkgQ29kZSDigJQgSW50ZXJhY3RpdmUgRXhwbGFpbmVyPC90aXRsZT4KPHN0eWxlPmh0bWwsYm9keXttYXJnaW46MDtwYWRkaW5nOjA7YmFja2dyb3VuZDojMDgwNzBBfTwvc3R5bGU CjwvaGVhZD4KPGJvZHk CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIE5vcnRoIE1pbmkgQ29kZSAtIEludGVyYWN0aXZlIEV4cGxhaW5lciAoTWFya3RlY2hwb3N0KQogICAgIFdvcmRQcmVzcyBDdXN0b20gSFRNTCBlbWJlZC4gTm8gRE9DVFlQRS9odG1sL2hlYWQvYm9keS4KICAgICBBbGwgQ1NTIHNjb3BlZCB0byAjbXRwLW5tYy4gVmFuaWxsYSBKUyBpbiBhbiBJSUZFLiBObyBDRE5zLgogICAgIENvaGVyZSB0aGVtZTogY29yYWwgKEJpdHRlcnN3ZWV0KSAvIGNyZWFtIChBbGFiYXN0ZXIpIC8gaW5rIChNaW5lIFNoYWZ0KS4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0 Cgo8c3R5bGU Ci8qIC0tLS0gd3BhdXRvcCBzdXBwcmVzc2lvbiAoc2NvcGVkKSAtLS0tICovCiNtdHAtbm1jIGhyLCAjbXRwLW5tYyBwOmVtcHR5LCAjbXRwLW5tYyBkZWwsICNtdHAtbm1jIHMgeyBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsgfQoKLyogLS0tLSB0b2tlbnMgKyByZXNldCAtLS0tICovCiNtdHAtbm1jewogIC0tY29yYWw6I0ZGNzc1OSAhaW1wb3J0YW50OwogIC0tY29yYWwtZGVlcDojRTg1NTNCICFpbXBvcnRhbnQ7CiAgLS1wdXJwbGU6I0I1N0JENiAhaW1wb3J0YW50OwogIC0tY3JlYW06I0ZCRjdGMCAhaW1wb3J0YW50OwogIC0tcGFwZXI6I0ZGRkZGRiAhaW1wb3J0YW50OwogIC0taW5rOiMxQzFCMUEgIWltcG9ydGFudDsKICAtLXNvZnQ6IzZCNjU2MCAhaW1wb3J0YW50OwogIC0tbGluZTojRUNFNUQ4ICFpbXBvcnRhbnQ7CiAgLS1nb29kOiMyRTdENUIgIWltcG9ydGFudDsKICBhbGw6aW5pdGlhbCAhaW1wb3J0YW50OwogIGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsKICBib3gtc2l6aW5nOmJvcmRlci1ib3ggIWltcG9ydGFudDsKICB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7CiAgbWF4LXdpZHRoOjkyMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luOjAgYXV0byAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6dmFyKC0tY3JlYW0pICFpbXBvcnRhbnQ7CiAgY29sb3I6dmFyKC0taW5rKSAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZCAhaW1wb3J0YW50OwogIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSkgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOjE4cHggIWltcG9ydGFudDsKICBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsKfQojbXRwLW5tYyAqLCNtdHAtbm1jICo6OmJlZm9yZSwjbXRwLW5tYyAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94ICFpbXBvcnRhbnQ7IH0KCi8qIC0tLS0gaGVhZGVyIC0tLS0gKi8KI210cC1ubWMgLm5tYy1oZWFkewogIHBhZGRpbmc6MzBweCAzMHB4IDI0cHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOgogICAgcmFkaWFsLWdyYWRpZW50KDEyMCUgMTQwJSBhdCAxMDAlIDAlLCByZ2JhKDI1NSwxMTksODksLjE2KSAwJSwgcmdiYSgyNTUsMTE5LDg5LDApIDU1JSksCiAgICB2YXIoLS1jcmVhbSkgIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lKSAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIC5ubWMtZXllYnJvd3sKICBkaXNwbGF5OmlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IGFsaWduLWl0ZW1zOmNlbnRlciAhaW1wb3J0YW50OyBnYXA6OHB4ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOjExcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IGxldHRlci1zcGFjaW5nOi4xNmVtICFpbXBvcnRhbnQ7CiAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWNvcmFsLWRlZXApICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTJweCAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIC5ubWMtZG90eyB3aWR0aDo3cHggIWltcG9ydGFudDsgaGVpZ2h0OjdweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjUwJSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnZhcigtLWNvcmFsKSAhaW1wb3J0YW50OyBkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIGgyLm5tYy10aXRsZXsKICBtYXJnaW46MCAhaW1wb3J0YW50OyBmb250LXNpemU6MzRweCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxLjA4ICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6ODAwICFpbXBvcnRhbnQ7IGxldHRlci1zcGFjaW5nOi0uMDJlbSAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7Cn0KI210cC1ubWMgLm5tYy1kZWt7IG1hcmdpbjoxMHB4IDAgMCAhaW1wb3J0YW50OyBmb250LXNpemU6MTUuNXB4ICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLXNvZnQpICFpbXBvcnRhbnQ7IG1heC13aWR0aDo2MmNoICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1jaGlwc3sgbWFyZ2luOjE4cHggMCAwICFpbXBvcnRhbnQ7IGRpc3BsYXk6ZmxleCAhaW1wb3J0YW50OyBmbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50OyBnYXA6OHB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1jaGlwewogIGZvbnQtc2l6ZToxMi41cHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NjAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWluaykgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOnZhcigtLXBhcGVyKSAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpICFpbXBvcnRhbnQ7CiAgcGFkZGluZzo2cHggMTFweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjk5OXB4ICFpbXBvcnRhbnQ7Cn0KI210cC1ubWMgLm5tYy1jaGlwIGJ7IGNvbG9yOnZhcigtLWNvcmFsLWRlZXApICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjgwMCAhaW1wb3J0YW50OyB9CgovKiAtLS0tIHRhYnMgLS0tLSAqLwojbXRwLW5tYyAubm1jLXRhYnN7CiAgZGlzcGxheTpmbGV4ICFpbXBvcnRhbnQ7IGdhcDo0cHggIWltcG9ydGFudDsgcGFkZGluZzoxMHB4IDE0cHggMCAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6dmFyKC0tcGFwZXIpICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUpICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3cteDphdXRvICFpbXBvcnRhbnQ7Cn0KI210cC1ubWMgLm5tYy10YWJ7CiAgYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyICFpbXBvcnRhbnQ7IHdoaXRlLXNwYWNlOm5vd3JhcCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OmluaGVyaXQgIWltcG9ydGFudDsgZm9udC1zaXplOjEzLjVweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsKICBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IGJvcmRlcjowICFpbXBvcnRhbnQ7CiAgYm9yZGVyLWJvdHRvbToycHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgcGFkZGluZzoxMnB4IDE0cHggMTNweCAhaW1wb3J0YW50OyBtYXJnaW46MCAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIC5ubWMtdGFiOmhvdmVyeyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy10YWJbYXJpYS1zZWxlY3RlZD0idHJ1ZSJdeyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tY29yYWwpICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy10YWI6Zm9jdXMtdmlzaWJsZXsgb3V0bGluZToycHggc29saWQgdmFyKC0tY29yYWwpICFpbXBvcnRhbnQ7IG91dGxpbmUtb2Zmc2V0OjJweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjZweCAhaW1wb3J0YW50OyB9CgovKiAtLS0tIHBhbmVscyAtLS0tICovCiNtdHAtbm1jIC5ubWMtcGFuZWx7IGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50OyBwYWRkaW5nOjI2cHggMzBweCAyOHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6dmFyKC0tcGFwZXIpICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1wYW5lbC5pcy1vbnsgZGlzcGxheTpibG9jayAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtaDN7IG1hcmdpbjowIDAgNHB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxM3B4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjgwMCAhaW1wb3J0YW50OyBsZXR0ZXItc3BhY2luZzouMDRlbSAhaW1wb3J0YW50OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UgIWltcG9ydGFudDsgY29sb3I6dmFyKC0tY29yYWwtZGVlcCkgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWxlYWR7IG1hcmdpbjowIDAgMThweCAhaW1wb3J0YW50OyBmb250LXNpemU6MTVweCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtbm90ZXsgZm9udC1zaXplOjEyLjVweCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBtYXJnaW46MTJweCAwIDAgIWltcG9ydGFudDsgfQoKLyogLS0tLSBzcGVjIGdyaWQgLS0tLSAqLwojbXRwLW5tYyAubm1jLWdyaWR7IGRpc3BsYXk6Z3JpZCAhaW1wb3J0YW50OyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsMWZyKSAhaW1wb3J0YW50OyBnYXA6MTBweCAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDE4cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWNlbGx7IGJhY2tncm91bmQ6dmFyKC0tY3JlYW0pICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSkgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxMnB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6MTRweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtY2VsbCAua3sgZm9udC1zaXplOjExcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IGxldHRlci1zcGFjaW5nOi4wNmVtICFpbXBvcnRhbnQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDVweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtY2VsbCAudnsgZm9udC1zaXplOjE1cHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWluaykgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWNlbGwgLnYgc21hbGx7IGZvbnQtd2VpZ2h0OjYwMCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBmb250LXNpemU6MTIuNXB4ICFpbXBvcnRhbnQ7IH0KCiNtdHAtbm1jIC5ubWMtbGFiZWx7IGZvbnQtc2l6ZToxMnB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjgwMCAhaW1wb3J0YW50OyBsZXR0ZXItc3BhY2luZzouMDVlbSAhaW1wb3J0YW50OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UgIWltcG9ydGFudDsgY29sb3I6dmFyKC0taW5rKSAhaW1wb3J0YW50OyBtYXJnaW46MThweCAwIDlweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtdGFnc3sgZGlzcGxheTpmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtd3JhcDp3cmFwICFpbXBvcnRhbnQ7IGdhcDo4cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXRhZ3sgZm9udC1zaXplOjEzcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NjAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWluaykgIWltcG9ydGFudDsgYmFja2dyb3VuZDp2YXIoLS1jcmVhbSkgIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjhweCAhaW1wb3J0YW50OyBwYWRkaW5nOjdweCAxMXB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy10YWcgYnsgY29sb3I6dmFyKC0tY29yYWwtZGVlcCkgIWltcG9ydGFudDsgfQoKLyogLS0tLSBjb250ZXh0IHNsaWRlciAtLS0tICovCiNtdHAtbm1jIC5ubWMtY3R4eyBiYWNrZ3JvdW5kOnZhcigtLWNyZWFtKSAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MTRweCAhaW1wb3J0YW50OyBwYWRkaW5nOjE4cHggIWltcG9ydGFudDsgbWFyZ2luOjZweCAwIDAgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWN0eCAucm93eyBkaXNwbGF5OmZsZXggIWltcG9ydGFudDsgYWxpZ24taXRlbXM6YmFzZWxpbmUgIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgZ2FwOjEycHggIWltcG9ydGFudDsgbWFyZ2luOjAgMCAxMnB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1jdHggLnZhbHsgZm9udC1zaXplOjI0cHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6ODAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWluaykgIWltcG9ydGFudDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1jdHggLnZhbCBlbXsgZm9udC1zdHlsZTpub3JtYWwgIWltcG9ydGFudDsgY29sb3I6dmFyKC0tY29yYWwtZGVlcCkgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWN0eCAudGllcnsgZm9udC1zaXplOjEzcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWNvcmFsLWRlZXApICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246cmlnaHQgIWltcG9ydGFudDsgfQojbXRwLW5tYyBpbnB1dFt0eXBlPXJhbmdlXS5ubWMtcmFuZ2V7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmUgIWltcG9ydGFudDsgYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6NnB4ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6OTlweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiNFQUUzRDUgIWltcG9ydGFudDsKICBvdXRsaW5lOm5vbmUgIWltcG9ydGFudDsgbWFyZ2luOjZweCAwIDZweCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsKfQojbXRwLW5tYyBpbnB1dFt0eXBlPXJhbmdlXS5ubWMtcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iewogIC13ZWJraXQtYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnQ7IGFwcGVhcmFuY2U6bm9uZSAhaW1wb3J0YW50OyB3aWR0aDoyMHB4ICFpbXBvcnRhbnQ7IGhlaWdodDoyMHB4ICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czo1MCUgIWltcG9ydGFudDsgYmFja2dyb3VuZDp2YXIoLS1jb3JhbCkgIWltcG9ydGFudDsgYm9yZGVyOjJweCBzb2xpZCAjZmZmICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzowIDFweCA1cHggcmdiYSgyMzIsODUsNTksLjUpICFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyICFpbXBvcnRhbnQ7Cn0KI210cC1ubWMgaW5wdXRbdHlwZT1yYW5nZV0ubm1jLXJhbmdlOjotbW96LXJhbmdlLXRodW1iewogIHdpZHRoOjE4cHggIWltcG9ydGFudDsgaGVpZ2h0OjE4cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo1MCUgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOnZhcigtLWNvcmFsKSAhaW1wb3J0YW50OyBib3JkZXI6MnB4IHNvbGlkICNmZmYgIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXIgIWltcG9ydGFudDsKfQojbXRwLW5tYyAubm1jLXRpY2tzeyBkaXNwbGF5OmZsZXggIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgZm9udC1zaXplOjExcHggIWltcG9ydGFudDsgY29sb3I6dmFyKC0tc29mdCkgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NjAwICFpbXBvcnRhbnQ7IG1hcmdpbjoycHggMCAwICFpbXBvcnRhbnQ7IH0KCi8qIC0tLS0gcGlwZWxpbmUgLS0tLSAqLwojbXRwLW5tYyAubm1jLXBpcGV7IGRpc3BsYXk6ZmxleCAhaW1wb3J0YW50OyBmbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50OyBhbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudDsgZ2FwOjZweCAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDE2cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXN0YWdlewogIGFwcGVhcmFuY2U6bm9uZSAhaW1wb3J0YW50OyBjdXJzb3I6cG9pbnRlciAhaW1wb3J0YW50OyBmb250LWZhbWlseTppbmhlcml0ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOjEzcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWluaykgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOnZhcigtLWNyZWFtKSAhaW1wb3J0YW50OyBib3JkZXI6MS41cHggc29saWQgdmFyKC0tbGluZSkgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzo5cHggMTJweCAhaW1wb3J0YW50OyBtYXJnaW46MCAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIC5ubWMtc3RhZ2U6aG92ZXJ7IGJvcmRlci1jb2xvcjp2YXIoLS1jb3JhbCkgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXN0YWdlW2FyaWEtcHJlc3NlZD0idHJ1ZSJdeyBiYWNrZ3JvdW5kOnZhcigtLWNvcmFsKSAhaW1wb3J0YW50OyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjp2YXIoLS1jb3JhbC1kZWVwKSAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtc3RhZ2U6Zm9jdXMtdmlzaWJsZXsgb3V0bGluZToycHggc29saWQgdmFyKC0taW5rKSAhaW1wb3J0YW50OyBvdXRsaW5lLW9mZnNldDoycHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWFycm93eyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOjE0cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWRldGFpbHsgYmFja2dyb3VuZDp2YXIoLS1jcmVhbSkgIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKSAhaW1wb3J0YW50OyBib3JkZXItbGVmdDo0cHggc29saWQgdmFyKC0tY29yYWwpICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MCAxMnB4IDEycHggMCAhaW1wb3J0YW50OyBwYWRkaW5nOjE0cHggMTZweCAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDRweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtZGV0YWlsIGg0eyBtYXJnaW46MCAwIDVweCAhaW1wb3J0YW50OyBmb250LXNpemU6MTQuNXB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjgwMCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1kZXRhaWwgcHsgbWFyZ2luOjAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzLjVweCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyB9CgovKiAtLS0tIE1vRSByb3V0ZXIgLS0tLSAqLwojbXRwLW5tYyAubm1jLWRpdmlkZXJ7IGhlaWdodDoxcHggIWltcG9ydGFudDsgYmFja2dyb3VuZDp2YXIoLS1saW5lKSAhaW1wb3J0YW50OyBtYXJnaW46MjJweCAwICFpbXBvcnRhbnQ7IGJvcmRlcjowICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1tb2Utd3JhcHsgZGlzcGxheTpncmlkICFpbXBvcnRhbnQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxLjA1ZnIgLjk1ZnIgIWltcG9ydGFudDsgZ2FwOjIycHggIWltcG9ydGFudDsgYWxpZ24taXRlbXM6c3RhcnQgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWdyaWQxMjh7IGRpc3BsYXk6Z3JpZCAhaW1wb3J0YW50OyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDE2LDFmcikgIWltcG9ydGFudDsgZ2FwOjRweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtZXhweyBhc3BlY3QtcmF0aW86MS8xICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6I0VGRTlERCAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNFNERDQ0IgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xOHMgZWFzZSwgdHJhbnNmb3JtIC4xOHMgZWFzZSAhaW1wb3J0YW50OyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtZXhwLmRpbXsgYmFja2dyb3VuZDojRjJFRUU1ICFpbXBvcnRhbnQ7IG9wYWNpdHk6LjcgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWV4cC5zZWVueyBiYWNrZ3JvdW5kOiNGNkM5QjYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNFOUE5OEYgIWltcG9ydGFudDsgb3BhY2l0eToxICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1leHAuYWN0aXZleyBiYWNrZ3JvdW5kOnZhcigtLWNvcmFsKSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6dmFyKC0tY29yYWwtZGVlcCkgIWltcG9ydGFudDsgdHJhbnNmb3JtOnNjYWxlKDEuMTIpICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6MCAycHggOHB4IHJnYmEoMjMyLDg1LDU5LC4zNSkgIWltcG9ydGFudDsgb3BhY2l0eToxICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1yZWFkb3V0eyBiYWNrZ3JvdW5kOnZhcigtLWNyZWFtKSAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MTRweCAhaW1wb3J0YW50OyBwYWRkaW5nOjE4cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXJlYWRvdXQgLmJpZ3sgZm9udC1zaXplOjMwcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6ODAwICFpbXBvcnRhbnQ7IGxldHRlci1zcGFjaW5nOi0uMDJlbSAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXJlYWRvdXQgLmJpZyBlbXsgZm9udC1zdHlsZTpub3JtYWwgIWltcG9ydGFudDsgY29sb3I6dmFyKC0tY29yYWwtZGVlcCkgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXJlYWRvdXQgLnN1YnsgZm9udC1zaXplOjEzcHggIWltcG9ydGFudDsgY29sb3I6dmFyKC0tc29mdCkgIWltcG9ydGFudDsgbWFyZ2luOjZweCAwIDE0cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLW1ldGVyeyBoZWlnaHQ6OHB4ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6OTlweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiNFQUUzRDUgIWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgNnB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1tZXRlciA IGl7IGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsgaGVpZ2h0OjEwMCUgIWltcG9ydGFudDsgd2lkdGg6Ni4yNSUgIWltcG9ydGFudDsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdmFyKC0tY29yYWwpLHZhcigtLWNvcmFsLWRlZXApKSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjk5cHggIWltcG9ydGFudDsgdHJhbnNpdGlvbjp3aWR0aCAuNHMgZWFzZSAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtbWxhYmVseyBkaXNwbGF5OmZsZXggIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgZm9udC1zaXplOjExLjVweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDo2MDAgIWltcG9ydGFudDsgY29sb3I6dmFyKC0tc29mdCkgIWltcG9ydGFudDsgbWFyZ2luOjAgMCAxNHB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1jdHJsc3sgZGlzcGxheTpmbGV4ICFpbXBvcnRhbnQ7IGdhcDo4cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWJ0bnsKICBhcHBlYXJhbmNlOm5vbmUgIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXIgIWltcG9ydGFudDsgZm9udC1mYW1pbHk6aW5oZXJpdCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZToxNHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDp2YXIoLS1jb3JhbCkgIWltcG9ydGFudDsgYm9yZGVyOjAgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzoxMXB4IDE2cHggIWltcG9ydGFudDsgZmxleDoxIDEgYXV0byAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIC5ubWMtYnRuOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWNvcmFsLWRlZXApICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1idG46Zm9jdXMtdmlzaWJsZXsgb3V0bGluZToycHggc29saWQgdmFyKC0taW5rKSAhaW1wb3J0YW50OyBvdXRsaW5lLW9mZnNldDoycHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWJ0bjJ7CiAgYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OmluaGVyaXQgIWltcG9ydGFudDsKICBmb250LXNpemU6MTRweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgY29sb3I6dmFyKC0taW5rKSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6dmFyKC0tcGFwZXIpICFpbXBvcnRhbnQ7IGJvcmRlcjoxLjVweCBzb2xpZCB2YXIoLS1saW5lKSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjEwcHggIWltcG9ydGFudDsKICBwYWRkaW5nOjExcHggMTRweCAhaW1wb3J0YW50OyBmbGV4OjAgMCBhdXRvICFpbXBvcnRhbnQ7Cn0KI210cC1ubWMgLm5tYy1idG4yOmhvdmVyeyBib3JkZXItY29sb3I6dmFyKC0tY29yYWwpICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1idG4yOmZvY3VzLXZpc2libGV7IG91dGxpbmU6MnB4IHNvbGlkIHZhcigtLWluaykgIWltcG9ydGFudDsgb3V0bGluZS1vZmZzZXQ6MnB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1yZXNldHsgYmFja2dyb3VuZDp0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBmb250LXNpemU6MTJweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXIgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjEycHggMCAwICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OmluaGVyaXQgIWltcG9ydGFudDsgfQoKLyogLS0tLSBwZXJmb3JtYW5jZSAtLS0tICovCiNtdHAtbm1jIC5ubWMtc3RhdGxpbmV7IGRpc3BsYXk6Z3JpZCAhaW1wb3J0YW50OyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsMWZyKSAhaW1wb3J0YW50OyBnYXA6MTBweCAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDIycHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXN0YXR7IGJhY2tncm91bmQ6dmFyKC0tY3JlYW0pICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSkgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxMnB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6MTZweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtc3RhdCAubnsgZm9udC1zaXplOjI2cHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6ODAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWNvcmFsLWRlZXApICFpbXBvcnRhbnQ7IGxldHRlci1zcGFjaW5nOi0uMDJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1zdGF0IC5seyBmb250LXNpemU6MTJweCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1zb2Z0KSAhaW1wb3J0YW50OyBtYXJnaW46NnB4IDAgMCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtc2VneyBkaXNwbGF5OmlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6dmFyKC0tY3JlYW0pICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSkgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxMHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6M3B4ICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTRweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtc2VnYnRueyBhcHBlYXJhbmNlOm5vbmUgIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXIgIWltcG9ydGFudDsgZm9udC1mYW1pbHk6aW5oZXJpdCAhaW1wb3J0YW50OyBmb250LXNpemU6MTNweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgY29sb3I6dmFyKC0tc29mdCkgIWltcG9ydGFudDsgYmFja2dyb3VuZDp0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjdweCAhaW1wb3J0YW50OyBwYWRkaW5nOjhweCAxNHB4ICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1zZWdidG5bYXJpYS1zZWxlY3RlZD0idHJ1ZSJdeyBiYWNrZ3JvdW5kOnZhcigtLXBhcGVyKSAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjA4KSAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtc2VnYnRuOmZvY3VzLXZpc2libGV7IG91dGxpbmU6MnB4IHNvbGlkIHZhcigtLWNvcmFsKSAhaW1wb3J0YW50OyBvdXRsaW5lLW9mZnNldDoycHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWNhcHsgZm9udC1zaXplOjEycHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLXNvZnQpICFpbXBvcnRhbnQ7IG1hcmdpbjowIDAgMTBweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtYmFyeyBtYXJnaW46MCAwIDE0cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWJhciAudG9weyBkaXNwbGF5OmZsZXggIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NjAwICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLWluaykgIWltcG9ydGFudDsgbWFyZ2luOjAgMCA2cHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWJhciAudHJhY2t7IGhlaWdodDoyMnB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6I0YwRUJFMCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjhweCAhaW1wb3J0YW50OyBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWJhciAuZmlsbHsgaGVpZ2h0OjEwMCUgIWltcG9ydGFudDsgd2lkdGg6MCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjhweCAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOndpZHRoIC45cyBjdWJpYy1iZXppZXIoLjIsLjcsLjIsMSkgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWJhciAuZmlsbC5heyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx2YXIoLS1jb3JhbCksdmFyKC0tY29yYWwtZGVlcCkpICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1iYXIgLmZpbGwuYnsgYmFja2dyb3VuZDojQzlCRkFFICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1tZXRoeyBmb250LXNpemU6MTIuNXB4ICFpbXBvcnRhbnQ7IGNvbG9yOnZhcigtLXNvZnQpICFpbXBvcnRhbnQ7IG1hcmdpbjoxNHB4IDAgMCAhaW1wb3J0YW50OyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKSAhaW1wb3J0YW50OyBwYWRkaW5nLXRvcDoxNHB4ICFpbXBvcnRhbnQ7IH0KCi8qIC0tLS0gY29kZSAtLS0tICovCiNtdHAtbm1jIC5ubWMtY29kZXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgcHJlLm5tYy1jb2RlewogIG1hcmdpbjowICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6IzFDMUIxQSAhaW1wb3J0YW50OyBjb2xvcjojRjNFRkU3ICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czoxMnB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6MThweCAhaW1wb3J0YW50OyBvdmVyZmxvdy14OmF1dG8gIWltcG9ydGFudDsKICBmb250LWZhbWlseTp1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sQ29uc29sYXMsIkxpYmVyYXRpb24gTW9ubyIsbW9ub3NwYWNlICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOjEyLjdweCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxLjY1ICFpbXBvcnRhbnQ7IHdoaXRlLXNwYWNlOnByZSAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIHByZS5ubWMtY29kZSAuY3sgY29sb3I6IzhFOEE4MCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIHByZS5ubWMtY29kZSAua3sgY29sb3I6I0ZGOUM3RSAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIHByZS5ubWMtY29kZSAuc3sgY29sb3I6IzlGQzc5QyAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtY29weXsKICBwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50OyB0b3A6MTFweCAhaW1wb3J0YW50OyByaWdodDoxMXB4ICFpbXBvcnRhbnQ7CiAgYXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OmluaGVyaXQgIWltcG9ydGFudDsKICBmb250LXNpemU6MTEuNXB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyBsZXR0ZXItc3BhY2luZzouMDRlbSAhaW1wb3J0YW50OwogIGNvbG9yOiNGM0VGRTcgIWltcG9ydGFudDsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCkgIWltcG9ydGFudDsKICBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE4KSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjdweCAhaW1wb3J0YW50OyBwYWRkaW5nOjVweCAxMHB4ICFpbXBvcnRhbnQ7Cn0KI210cC1ubWMgLm5tYy1jb3B5OmhvdmVyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDExOSw4OSwuMjUpICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjp2YXIoLS1jb3JhbCkgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLXJ1bnJvd3sgZGlzcGxheTpmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtd3JhcDp3cmFwICFpbXBvcnRhbnQ7IGdhcDo4cHggIWltcG9ydGFudDsgbWFyZ2luOjE0cHggMCAwICFpbXBvcnRhbnQ7IH0KI210cC1ubWMgLm5tYy1waWxseyBmb250LXNpemU6MTIuNXB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjYwMCAhaW1wb3J0YW50OyBjb2xvcjp2YXIoLS1pbmspICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6dmFyKC0tY3JlYW0pICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSkgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo4cHggIWltcG9ydGFudDsgcGFkZGluZzo3cHggMTFweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtcGlsbCBieyBjb2xvcjp2YXIoLS1jb3JhbC1kZWVwKSAhaW1wb3J0YW50OyB9CgovKiAtLS0tIGZvb3RlciAvIE1hcmt0ZWNocG9zdCB0YWdsaW5lIC0tLS0gKi8KI210cC1ubWMgLm5tYy1mb290ewogIGRpc3BsYXk6ZmxleCAhaW1wb3J0YW50OyBhbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgZ2FwOjE0cHggIWltcG9ydGFudDsKICBwYWRkaW5nOjE4cHggMzBweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnZhcigtLWluaykgIWltcG9ydGFudDsgY29sb3I6I0YzRUZFNyAhaW1wb3J0YW50OyBmbGV4LXdyYXA6d3JhcCAhaW1wb3J0YW50Owp9CiNtdHAtbm1jIC5ubWMtZm9vdCAuYnJhbmR7IGRpc3BsYXk6ZmxleCAhaW1wb3J0YW50OyBhbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudDsgZ2FwOjEwcHggIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWZvb3QgLm1hcmt7IHdpZHRoOjI2cHggIWltcG9ydGFudDsgaGVpZ2h0OjI2cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo3cHggIWltcG9ydGFudDsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWNvcmFsKSx2YXIoLS1jb3JhbC1kZWVwKSkgIWltcG9ydGFudDsgZGlzcGxheTppbmxpbmUtZmxleCAhaW1wb3J0YW50OyBhbGlnbi1pdGVtczpjZW50ZXIgIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OmNlbnRlciAhaW1wb3J0YW50OyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjgwMCAhaW1wb3J0YW50OyBmb250LXNpemU6MTRweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtZm9vdCAudHh0IGJ7IGZvbnQtc2l6ZToxNHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmYgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6ODAwICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWZvb3QgLnR4dCBzcGFueyBmb250LXNpemU6MTIuNXB4ICFpbXBvcnRhbnQ7IGNvbG9yOiNCREI3QUMgIWltcG9ydGFudDsgfQojbXRwLW5tYyAubm1jLWZvb3QgYS5ubWMtY3RheyBmb250LXNpemU6MTNweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgY29sb3I6dmFyKC0taW5rKSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiNGM0VGRTcgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDsgcGFkZGluZzo5cHggMTRweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjlweCAhaW1wb3J0YW50OyB9CiNtdHAtbm1jIC5ubWMtZm9vdCBhLm5tYy1jdGE6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tY29yYWwpICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmYgIWltcG9ydGFudDsgfQoKLyogLS0tLSBtb2JpbGUgLS0tLSAqLwpAbWVkaWEgKG1heC13aWR0aDo2NDBweCl7CiAgI210cC1ubWMgLm5tYy1oZWFkeyBwYWRkaW5nOjI0cHggMjBweCAyMHB4ICFpbXBvcnRhbnQ7IH0KICAjbXRwLW5tYyBoMi5ubWMtdGl0bGV7IGZvbnQtc2l6ZToyN3B4ICFpbXBvcnRhbnQ7IH0KICAjbXRwLW5tYyAubm1jLXBhbmVseyBwYWRkaW5nOjIycHggMjBweCAyNHB4ICFpbXBvcnRhbnQ7IH0KICAjbXRwLW5tYyAubm1jLWdyaWR7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpICFpbXBvcnRhbnQ7IH0KICAjbXRwLW5tYyAubm1jLXN0YXRsaW5leyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyICFpbXBvcnRhbnQ7IH0KICAjbXRwLW5tYyAubm1jLW1vZS13cmFweyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyICFpbXBvcnRhbnQ7IH0KICAjbXRwLW5tYyAubm1jLWZvb3R7IHBhZGRpbmc6MTZweCAyMHB4ICFpbXBvcnRhbnQ7IH0KfQoKLyogLS0tLSByZWR1Y2VkIG1vdGlvbiAtLS0tICovCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2UpewogICNtdHAtbm1jICp7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50OyB9Cn0KPC9zdHlsZT4KCjxkaXYgaWQ9Im10cC1ubWMiIHJvbGU9InJlZ2lvbiIgYXJpYS1sYWJlbD0iTm9ydGggTWluaSBDb2RlIGludGVyYWN0aXZlIGV4cGxhaW5lciI CgogIDxkaXYgY2xhc3M9Im5tYy1oZWFkIj4KICAgIDxkaXYgY2xhc3M9Im5tYy1leWVicm93Ij48c3BhbiBjbGFzcz0ibm1jLWRvdCI PC9zcGFuPiBDb2hlcmUgJm1pZGRvdDsgT3Blbi1XZWlnaHQgQ29kaW5nIE1vZGVsPC9kaXY CiAgICA8aDIgY2xhc3M9Im5tYy10aXRsZSI Tm9ydGggTWluaSBDb2RlPC9oMj4KICAgIDxwIGNsYXNzPSJubWMtZGVrIj5Db2hlcmUncyBmaXJzdCBkZXZlbG9wZXIgY29kaW5nIG1vZGVsOiBhIDMwQiBtaXh0dXJlLW9mLWV4cGVydHMgdGhhdCBhY3RpdmF0ZXMganVzdCAzQiBwYXJhbWV0ZXJzIHBlciB0b2tlbiwgYnVpbHQgZm9yIGFnZW50aWMgc29mdHdhcmUgZW5naW5lZXJpbmcgYW5kIHRlcm1pbmFsIHRhc2tzLjwvcD4KICAgIDxkaXYgY2xhc3M9Im5tYy1jaGlwcyI CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtY2hpcCI PGI MzBCPC9iPiB0b3RhbCBwYXJhbXM8L3NwYW4 CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtY2hpcCI PGI M0I8L2I IGFjdGl2ZSAvIHRva2VuPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLWNoaXAiPjxiPjI1Nks8L2I IGNvbnRleHQ8L3NwYW4 CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtY2hpcCI PGI NjRLPC9iPiBtYXggb3V0cHV0PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLWNoaXAiPjEmdGltZXM7IEgxMDAgQCBGUDg8L3NwYW4 CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0ibm1jLXRhYnMiIHJvbGU9InRhYmxpc3QiIGFyaWEtbGFiZWw9IlNlY3Rpb25zIj4KICAgIDxidXR0b24gY2xhc3M9Im5tYy10YWIiIHJvbGU9InRhYiIgYXJpYS1zZWxlY3RlZD0idHJ1ZSIgIGRhdGEtcGFuZWw9InNuYXAiPlNuYXBzaG90PC9idXR0b24 CiAgICA8YnV0dG9uIGNsYXNzPSJubWMtdGFiIiByb2xlPSJ0YWIiIGFyaWEtc2VsZWN0ZWQ9ImZhbHNlIiBkYXRhLXBhbmVsPSJtb2UiPkhvdyBpdCB3b3JrczwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0ibm1jLXRhYiIgcm9sZT0idGFiIiBhcmlhLXNlbGVjdGVkPSJmYWxzZSIgZGF0YS1wYW5lbD0icGVyZiI UGVyZm9ybWFuY2U8L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9Im5tYy10YWIiIHJvbGU9InRhYiIgYXJpYS1zZWxlY3RlZD0iZmFsc2UiIGRhdGEtcGFuZWw9InJ1biI UnVuIGl0PC9idXR0b24 CiAgPC9kaXY CgogIDwhLS0gU05BUFNIT1QgLS0 CiAgPGRpdiBjbGFzcz0ibm1jLXBhbmVsIGlzLW9uIiBkYXRhLXBhbmVsPSJzbmFwIiByb2xlPSJ0YWJwYW5lbCI CiAgICA8ZGl2IGNsYXNzPSJubWMtaDMiPlRoZSBtb2RlbCBhdCBhIGdsYW5jZTwvZGl2PgogICAgPHAgY2xhc3M9Im5tYy1sZWFkIj5PcGVuIHdlaWdodHMsIHJlbGVhc2VkIEp1bmUgOSwgMjAyNi4gVGV4dCBpbiwgdGV4dCBvdXQuPC9wPgogICAgPGRpdiBjbGFzcz0ibm1jLWdyaWQiPgogICAgICA8ZGl2IGNsYXNzPSJubWMtY2VsbCI PGRpdiBjbGFzcz0iayI U2l6ZTwvZGl2PjxkaXYgY2xhc3M9InYiPjMwQiB0b3RhbCA8c21hbGw LyAzQiBhY3RpdmU8L3NtYWxsPjwvZGl2PjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJubWMtY2VsbCI PGRpdiBjbGFzcz0iayI QXJjaGl0ZWN0dXJlPC9kaXY PGRpdiBjbGFzcz0idiI U3BhcnNlIE1vRSA8c21hbGw KGRlY29kZXItb25seSk8L3NtYWxsPjwvZGl2PjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJubWMtY2VsbCI PGRpdiBjbGFzcz0iayI Q29udGV4dDwvZGl2PjxkaXYgY2xhc3M9InYiPjI1NksgPHNtYWxsPi8gNjRLIG91dHB1dDwvc21hbGw PC9kaXY PC9kaXY CiAgICAgIDxkaXYgY2xhc3M9Im5tYy1jZWxsIj48ZGl2IGNsYXNzPSJrIj5NaW4gaGFyZHdhcmU8L2Rpdj48ZGl2IGNsYXNzPSJ2Ij4xJnRpbWVzOyBIMTAwIDxzbWFsbD5AIEZQODwvc21hbGw PC9kaXY PC9kaXY CiAgICAgIDxkaXYgY2xhc3M9Im5tYy1jZWxsIj48ZGl2IGNsYXNzPSJrIj5QcmVjaXNpb248L2Rpdj48ZGl2IGNsYXNzPSJ2Ij5CRjE2IDxzbWFsbD53ZWlnaHRzPC9zbWFsbD48L2Rpdj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibm1jLWNlbGwiPjxkaXYgY2xhc3M9ImsiPkxpY2Vuc2U8L2Rpdj48ZGl2IGNsYXNzPSJ2Ij5BcGFjaGUgMi4wIDxzbWFsbD5zZWUgbm90ZTwvc21hbGw PC9kaXY PC9kaXY CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJubWMtbGFiZWwiPkNvbnRleHQgd2luZG93ICZtaWRkb3Q7IGRyYWcgdG8gZXhwbG9yZTwvZGl2PgogICAgPGRpdiBjbGFzcz0ibm1jLWN0eCI CiAgICAgIDxkaXYgY2xhc3M9InJvdyI CiAgICAgICAgPGRpdiBjbGFzcz0idmFsIj48ZW0gaWQ9Im5tYy1jdHh2YWwiPjEyOEs8L2VtPiB0b2tlbnM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aWVyIiBpZD0ibm1jLWN0eHRpZXIiPmEgbWlkLXNpemUgY29kZWJhc2U8L2Rpdj4KICAgICAgPC9kaXY CiAgICAgIDxpbnB1dCBjbGFzcz0ibm1jLXJhbmdlIiBpZD0ibm1jLWN0eHJhbmdlIiB0eXBlPSJyYW5nZSIgbWluPSI4IiBtYXg9IjI1NiIgc3RlcD0iOCIgdmFsdWU9IjEyOCIgYXJpYS1sYWJlbD0iQ29udGV4dCB3aW5kb3cgaW4gdGhvdXNhbmRzIG9mIHRva2VucyI CiAgICAgIDxkaXYgY2xhc3M9Im5tYy10aWNrcyI PHNwYW4 OEs8L3NwYW4 PHNwYW4 NjRLIG91dHB1dCBjYXA8L3NwYW4 PHNwYW4 MjU2SyBtYXg8L3NwYW4 PC9kaXY CiAgICAgIDxwIGNsYXNzPSJubWMtbm90ZSI UmVsYXRhYmxlIHNpemVzIGFyZSBhcHByb3hpbWF0ZS4gVGhlIGV4YWN0IGxpbWl0cyBhcmUgMjU2SyBjb250ZXh0IGFuZCA2NEsgbWF4aW11bSBnZW5lcmF0aW9uLjwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im5tYy1sYWJlbCI T3B0aW1pemVkIGZvcjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibm1jLXRhZ3MiPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLXRhZyI Q29kZSBnZW5lcmF0aW9uPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLXRhZyI QWdlbnRpYyBzb2Z0d2FyZSBlbmdpbmVlcmluZzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Im5tYy10YWciPlRlcm1pbmFsIHRhc2tzPC9zcGFuPgogICAgPC9kaXY CgogICAgPGRpdiBjbGFzcz0ibm1jLWxhYmVsIj5BZ2VudGljIHVzZSBjYXNlczwvZGl2PgogICAgPGRpdiBjbGFzcz0ibm1jLXRhZ3MiPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLXRhZyI U3ViLWFnZW50IG9yY2hlc3RyYXRpb248L3NwYW4 CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtdGFnIj5TeXN0ZW1zIGFyY2hpdGVjdHVyZSBtYXBwaW5nPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLXRhZyI Q29kZSByZXZpZXdzPC9zcGFuPgogICAgPC9kaXY CgogICAgPHAgY2xhc3M9Im5tYy1ub3RlIj5MaWNlbnNlIG5vdGU6IENvaGVyZSdzIGJsb2cgc3RhdGVzIEFwYWNoZSAyLjAuIFRoZSBIdWdnaW5nIEZhY2UgY2FyZCBhZGRzIGFuIGFjY2VwdGFibGUtdXNlIGFkZGVuZHVtIGFuZCBhIG5vbi1jb21tZXJjaWFsIG5vdGUuIENoZWNrIGJvdGggYmVmb3JlIGRlcGxveWluZy48L3A CiAgPC9kaXY CgogIDwhLS0gSE9XIElUIFdPUktTIC0tPgogIDxkaXYgY2xhc3M9Im5tYy1wYW5lbCIgZGF0YS1wYW5lbD0ibW9lIiByb2xlPSJ0YWJwYW5lbCI CiAgICA8ZGl2IGNsYXNzPSJubWMtaDMiPlRoZSBmb3J3YXJkIHBhc3M8L2Rpdj4KICAgIDxwIGNsYXNzPSJubWMtbGVhZCI VGFwIGFueSBzdGFnZSB0byBzZWUgd2hhdCBpdCBkb2VzLiBUaGUgTW9FIGJsb2NrIGlzIHdoZXJlIHNwYXJzaXR5IGhhcHBlbnMuPC9wPgoKICAgIDxkaXYgY2xhc3M9Im5tYy1waXBlIiBpZD0ibm1jLXBpcGUiPgogICAgICA8YnV0dG9uIGNsYXNzPSJubWMtc3RhZ2UiIGRhdGEtc3RhZ2U9IjAiIGFyaWEtcHJlc3NlZD0idHJ1ZSI SW5wdXQgdG9rZW5zPC9idXR0b24 CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtYXJyb3ciPiZyYXJyOzwvc3Bhbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibm1jLXN0YWdlIiBkYXRhLXN0YWdlPSIxIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj5EZW5zZSBsYXllcjwvYnV0dG9uPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLWFycm93Ij4mcmFycjs8L3NwYW4 CiAgICAgIDxidXR0b24gY2xhc3M9Im5tYy1zdGFnZSIgZGF0YS1zdGFnZT0iMiIgYXJpYS1wcmVzc2VkPSJmYWxzZSI QXR0ZW50aW9uICgzOjEpPC9idXR0b24 CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtYXJyb3ciPiZyYXJyOzwvc3Bhbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibm1jLXN0YWdlIiBkYXRhLXN0YWdlPSIzIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj5Nb0UgYmxvY2s8L2J1dHRvbj4KICAgICAgPHNwYW4gY2xhc3M9Im5tYy1hcnJvdyI JnJhcnI7PC9zcGFuPgogICAgICA8YnV0dG9uIGNsYXNzPSJubWMtc3RhZ2UiIGRhdGEtc3RhZ2U9IjQiIGFyaWEtcHJlc3NlZD0iZmFsc2UiPk91dHB1dDwvYnV0dG9uPgogICAgPC9kaXY CiAgICA8ZGl2IGNsYXNzPSJubWMtZGV0YWlsIiBpZD0ibm1jLWRldGFpbCIgYXJpYS1saXZlPSJwb2xpdGUiPgogICAgICA8aDQ SW5wdXQgdG9rZW5zPC9oND4KICAgICAgPHA VGV4dCBpcyB0b2tlbml6ZWQgYW5kIGZlZCB0byBhIGRlY29kZXItb25seSBUcmFuc2Zvcm1lci4gVGhlIG1vZGVsIGlzIHRleHQgaW4sIHRleHQgb3V0LjwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im5tYy1kaXZpZGVyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJubWMtaDMiPlRyeSB0aGUgcm91dGVyPC9kaXY CiAgICA8cCBjbGFzcz0ibm1jLWxlYWQiPkVhY2ggTW9FIGJsb2NrIGhvbGRzIDEyOCBleHBlcnRzLiBUaGUgcm91dGVyIHNlbGVjdHMgOCBwZXIgdG9rZW4uIFJvdXRlIHRva2VucyBhbmQgd2F0Y2ggY292ZXJhZ2UgZ3Jvdy48L3A CiAgICA8ZGl2IGNsYXNzPSJubWMtbW9lLXdyYXAiPgogICAgICA8ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5tYy1ncmlkMTI4IiBpZD0ibm1jLWV4cGVydHMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4KICAgICAgICA8cCBjbGFzcz0ibm1jLW5vdGUiPkNvcmFsID0gdGhlIDggZXhwZXJ0cyBmaXJpbmcgbm93LiBQZWFjaCA9IGV4cGVydHMgdXNlZCBlYXJsaWVyIGluIHRoZSBydW4uIEhvdmVyIGEgc3F1YXJlIHRvIGluc3BlY3QuPC9wPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibm1jLXJlYWRvdXQiPgogICAgICAgIDxkaXYgY2xhc3M9ImJpZyI PGVtPjg8L2VtPiAvIDEyOCBleHBlcnRzPC9kaXY CiAgICAgICAgPGRpdiBjbGFzcz0ic3ViIj42LjI1JSBvZiBleHBlcnRzIHJ1biBwZXIgdG9rZW4sIHNvIGNvbXB1dGUgc3RheXMgc21hbGwuPC9kaXY CiAgICAgICAgPGRpdiBjbGFzcz0ibm1jLW1ldGVyIj48aSBpZD0ibm1jLWNvdiI PC9pPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5tYy1tbGFiZWwiPjxzcGFuPlVuaXF1ZSBleHBlcnRzIHVzZWQ8L3NwYW4 PHNwYW4gaWQ9Im5tYy1jb3ZudW0iPjAgLyAxMjg8L3NwYW4 PC9kaXY CiAgICAgICAgPGRpdiBjbGFzcz0ibm1jLW1sYWJlbCIgc3R5bGU9Im1hcmdpbi10b3A6LThweCAhaW1wb3J0YW50OyI PHNwYW4 VG9rZW5zIHJvdXRlZDwvc3Bhbj48c3BhbiBpZD0ibm1jLXRvayI MDwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJubWMtY3RybHMiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibm1jLWJ0biIgaWQ9Im5tYy1yb3V0ZSIgdHlwZT0iYnV0dG9uIj5Sb3V0ZSBhIHRva2VuICZyYXJyOzwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibm1jLWJ0bjIiIGlkPSJubWMtYXV0byIgdHlwZT0iYnV0dG9uIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj5BdXRvPC9idXR0b24 CiAgICAgICAgPC9kaXY CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibm1jLXJlc2V0IiBpZD0ibm1jLXJlc2V0IiB0eXBlPSJidXR0b24iPlJlc2V0IGNvdmVyYWdlPC9idXR0b24 CiAgICAgIDwvZGl2PgogICAgPC9kaXY CiAgPC9kaXY CgogIDwhLS0gUEVSRk9STUFOQ0UgLS0 CiAgPGRpdiBjbGFzcz0ibm1jLXBhbmVsIiBkYXRhLXBhbmVsPSJwZXJmIiByb2xlPSJ0YWJwYW5lbCI CiAgICA8ZGl2IGNsYXNzPSJubWMtaDMiPlJlcG9ydGVkIHBlcmZvcm1hbmNlPC9kaXY CiAgICA8cCBjbGFzcz0ibm1jLWxlYWQiPkZpZ3VyZXMgYXJlIGZyb20gQ29oZXJlLiBJbmRlcGVuZGVudCBydW5zIG9uIHlvdXIgb3duIHdvcmtsb2FkIHN0aWxsIG1hdHRlci48L3A CgogICAgPGRpdiBjbGFzcz0ibm1jLXN0YXRsaW5lIj4KICAgICAgPGRpdiBjbGFzcz0ibm1jLXN0YXQiPjxkaXYgY2xhc3M9Im4iIGRhdGEtY291bnQ9IjMzLjQiIGRhdGEtc3VmZml4PSIiPjA8L2Rpdj48ZGl2IGNsYXNzPSJsIj5BcnRpZmljaWFsIEFuYWx5c2lzIENvZGluZyBJbmRleDwvZGl2PjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJubWMtc3RhdCI PGRpdiBjbGFzcz0ibiIgZGF0YS1jb3VudD0iMi44IiBkYXRhLXByZWZpeD0idXAgdG8gIiBkYXRhLXN1ZmZpeD0iJnRpbWVzOyI MDwvZGl2PjxkaXYgY2xhc3M9ImwiPk91dHB1dCB0aHJvdWdocHV0IHZzIERldnN0cmFsIFNtYWxsIDI8L2Rpdj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibm1jLXN0YXQiPjxkaXYgY2xhc3M9Im4iIGRhdGEtY291bnQ9IjMwIiBkYXRhLXN1ZmZpeD0iJSI MDwvZGl2PjxkaXYgY2xhc3M9ImwiPkJldHRlciBpbnRlci10b2tlbiBsYXRlbmN5PC9kaXY PC9kaXY CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJubWMtc2VnIiByb2xlPSJ0YWJsaXN0IiBhcmlhLWxhYmVsPSJNZXRyaWMiPgogICAgICA8YnV0dG9uIGNsYXNzPSJubWMtc2VnYnRuIiBpZD0ibm1jLXNlZy10cCIgcm9sZT0idGFiIiBhcmlhLXNlbGVjdGVkPSJ0cnVlIj5UaHJvdWdocHV0PC9idXR0b24 CiAgICAgIDxidXR0b24gY2xhc3M9Im5tYy1zZWdidG4iIGlkPSJubWMtc2VnLWxhdCIgcm9sZT0idGFiIiBhcmlhLXNlbGVjdGVkPSJmYWxzZSI SW50ZXItdG9rZW4gbGF0ZW5jeTwvYnV0dG9uPgogICAgPC9kaXY CiAgICA8ZGl2IGNsYXNzPSJubWMtY2FwIiBpZD0ibm1jLWNhcCI SGlnaGVyIGlzIGJldHRlcjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibm1jLWJhcnMiIGlkPSJubWMtYmFycyI CiAgICAgIDxkaXYgY2xhc3M9Im5tYy1iYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRvcCI PHNwYW4 Tm9ydGggTWluaSBDb2RlPC9zcGFuPjxzcGFuIGlkPSJubWMtYnYtYSI dXAgdG8gMi44JnRpbWVzOzwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFjayI PGRpdiBjbGFzcz0iZmlsbCBhIiBpZD0ibm1jLWZpbGwtYSIgZGF0YS13PSIxMDAlIj48L2Rpdj48L2Rpdj4KICAgICAgPC9kaXY CiAgICAgIDxkaXYgY2xhc3M9Im5tYy1iYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRvcCI PHNwYW4 RGV2c3RyYWwgU21hbGwgMjwvc3Bhbj48c3BhbiBpZD0ibm1jLWJ2LWIiPjEuMCZ0aW1lczsgKGJhc2VsaW5lKTwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0cmFjayI PGRpdiBjbGFzcz0iZmlsbCBiIiBpZD0ibm1jLWZpbGwtYiIgZGF0YS13PSIzNiUiPjwvZGl2PjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxwIGNsYXNzPSJubWMtbm90ZSI VGltZS10by1maXJzdC10b2tlbiB3YXMgY2xvc2VseSBtYXRjaGVkLCB3aXRoIERldnN0cmFsIFNtYWxsIDIgaG9sZGluZyBhIHNsaWdodCBlZGdlLjwvcD4KCiAgICA8cCBjbGFzcz0ibm1jLW1ldGgiPkJlbmNobWFya3M6IFNXRS1CZW5jaCBWZXJpZmllZCwgU1dFLUJlbmNoIFBybywgVGVybWluYWwtQmVuY2ggdjIsIFRlcm1pbmFsLUJlbmNoIEhhcmQsIFNjaUNvZGUsIExpdmVDb2RlQmVuY2ggdjYuIEhhcm5lc3NlczogU1dFLWFnZW50IHYxLjEuMCAoU1dFLUJlbmNoKSwgYSBSZUFjdCBoYXJuZXNzIHdpdGggb25lIHRlcm1pbmFsIHRvb2wgKFRlcm1pbmFsLUJlbmNoIHYyKSwgVGVybWludXMtMiAoVGVybWluYWwtQmVuY2ggSGFyZCkuIEVhY2ggcnVuIHVzZWQgMyBzZWVkcywgYXZlcmFnZWQsIGF0IHRlbXBlcmF0dXJlIDEuMCBhbmQgdG9wX3AgMC45NS48L3A CiAgPC9kaXY CgogIDwhLS0gUlVOIElUIC0tPgogIDxkaXYgY2xhc3M9Im5tYy1wYW5lbCIgZGF0YS1wYW5lbD0icnVuIiByb2xlPSJ0YWJwYW5lbCI CiAgICA8ZGl2IGNsYXNzPSJubWMtaDMiPlF1aWNrc3RhcnQ8L2Rpdj4KICAgIDxwIGNsYXNzPSJubWMtbGVhZCI SHVnZ2luZyBGYWNlIFRyYW5zZm9ybWVycywgaW5zdGFsbGVkIGZyb20gc291cmNlLiBSZWNvbW1lbmRlZCBzYW1wbGluZzogdGVtcGVyYXR1cmUgMS4wLCB0b3BfcCAwLjk1LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJubWMtY29kZXdyYXAiPgogICAgICA8YnV0dG9uIGNsYXNzPSJubWMtY29weSIgaWQ9Im5tYy1jb3B5IiB0eXBlPSJidXR0b24iPkNvcHk8L2J1dHRvbj4KICAgICAgPHByZSBjbGFzcz0ibm1jLWNvZGUiIGlkPSJubWMtY29kZWJsb2NrIj48c3BhbiBjbGFzcz0iYyI IyBJbnN0YWxsIFRyYW5zZm9ybWVycyBmcm9tIHNvdXJjZSwgdGhlbjo8L3NwYW4 CjxzcGFuIGNsYXNzPSJrIj5mcm9tPC9zcGFuPiB0cmFuc2Zvcm1lcnMgPHNwYW4gY2xhc3M9ImsiPmltcG9ydDwvc3Bhbj4gQXV0b1Rva2VuaXplciwgQXV0b01vZGVsRm9yQ2F1c2FsTE0KCm1pZCA9IDxzcGFuIGNsYXNzPSJzIj4iQ29oZXJlTGFicy9Ob3J0aC1NaW5pLUNvZGUtMS4wIjwvc3Bhbj4KdG9rID0gQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQobWlkKQptb2RlbCA9IEF1dG9Nb2RlbEZvckNhdXNhbExNLmZyb21fcHJldHJhaW5lZChtaWQsIGRldmljZV9tYXA9PHNwYW4gY2xhc3M9InMiPiJhdXRvIjwvc3Bhbj4pCgptc2dzID0gW3s8c3BhbiBjbGFzcz0icyI InJvbGUiPC9zcGFuPjogPHNwYW4gY2xhc3M9InMiPiJ1c2VyIjwvc3Bhbj4sIDxzcGFuIGNsYXNzPSJzIj4iY29udGVudCI8L3NwYW4 OiA8c3BhbiBjbGFzcz0icyI IldyaXRlIGEgUHl0aG9uIHBhbGluZHJvbWUgY2hlY2tlci4iPC9zcGFuPn1dCmlucHV0cyA9IHRvay5hcHBseV9jaGF0X3RlbXBsYXRlKAogICAgbXNncywgYWRkX2dlbmVyYXRpb25fcHJvbXB0PTxzcGFuIGNsYXNzPSJrIj5UcnVlPC9zcGFuPiwKICAgIHJldHVybl9kaWN0PTxzcGFuIGNsYXNzPSJrIj5UcnVlPC9zcGFuPiwgcmV0dXJuX3RlbnNvcnM9PHNwYW4gY2xhc3M9InMiPiJwdCI8L3NwYW4 LAopLnRvKG1vZGVsLmRldmljZSkKCm91dCA9IG1vZGVsLmdlbmVyYXRlKCoqaW5wdXRzLCBtYXhfbmV3X3Rva2Vucz0xMDI0LAogICAgICAgICAgICAgICAgICAgICBkb19zYW1wbGU9PHNwYW4gY2xhc3M9ImsiPlRydWU8L3NwYW4 LCB0ZW1wZXJhdHVyZT0xLjAsIHRvcF9wPTAuOTUpCjxzcGFuIGNsYXNzPSJrIj5wcmludDwvc3Bhbj4odG9rLmRlY29kZShvdXRbMF1baW5wdXRzWzxzcGFuIGNsYXNzPSJzIj4iaW5wdXRfaWRzIjwvc3Bhbj5dLnNoYXBlWy0xXTpdKSk8L3ByZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9Im5tYy1ydW5yb3ciPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLXBpbGwiPlNlcnZlIHdpdGggPGI dkxMTTwvYj4gKCsgY29oZXJlX21lbG9keSk8L3NwYW4 CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtcGlsbCI VHJhaW5lZCBmb3IgPGI T3BlbkNvZGU8L2I PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ibm1jLXBpbGwiPk5hdGl2ZSA8Yj50b29sIHVzZTwvYj4gKyBpbnRlcmxlYXZlZCB0aGlua2luZzwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibm1jLXJ1bnJvdyI CiAgICAgIDxzcGFuIGNsYXNzPSJubWMtcGlsbCI UXVhbnRpemVkOiA8Yj5PbGxhbWE8L2I LCBMTSBTdHVkaW8sIGxsYW1hLmNwcDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Im5tYy1waWxsIj5BbHNvIG9uIENvaGVyZSBBUEksIE1vZGVsIFZhdWx0LCBPcGVuUm91dGVyPC9zcGFuPgogICAgPC9kaXY CiAgPC9kaXY CgogIDxkaXYgY2xhc3M9Im5tYy1mb290Ij4KICAgIDxkaXYgY2xhc3M9ImJyYW5kIj4KICAgICAgPHNwYW4gY2xhc3M9Im1hcmsiPk08L3NwYW4 CiAgICAgIDxzcGFuIGNsYXNzPSJ0eHQiPjxiPk1hcmt0ZWNocG9zdDwvYj48c3Bhbj5BSSBtb2RlbHMsIHJlc2VhcmNoICZhbXA7IGRldiB0b29scywgZGVjb2RlZCBmb3IgYnVpbGRlcnMuPC9zcGFuPjwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGEgY2xhc3M9Im5tYy1jdGEiIGhyZWY9Imh0dHBzOi8vd3d3Lm1hcmt0ZWNocG9zdC5jb20vIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI UmVhZCBtb3JlIG9uIE1hcmt0ZWNocG9zdDwvYT4KICA8L2Rpdj4KCjwvZGl2PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKCl7CiAgdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXRwLW5tYycpOwogIGlmKCFyb290IHx8IHJvb3QuZGF0YXNldC5pbml0KSByZXR1cm47CiAgcm9vdC5kYXRhc2V0LmluaXQgPSAnMSc7CiAgdmFyIHJlZHVjZSA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CgogIC8qIC0tLS0gdGFicyAtLS0tICovCiAgdmFyIHRhYnMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ubWMtdGFiJyk7CiAgdmFyIHBhbmVscyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLm5tYy1wYW5lbCcpOwogIGZ1bmN0aW9uIHNob3cobmFtZSl7CiAgICB0YWJzLmZvckVhY2goZnVuY3Rpb24odCl7IHQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgdC5kYXRhc2V0LnBhbmVsID09PSBuYW1lID8gJ3RydWUnIDogJ2ZhbHNlJyk7IH0pOwogICAgcGFuZWxzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtb24nLCBwLmRhdGFzZXQucGFuZWwgPT09IG5hbWUpOyB9KTsKICAgIGlmKG5hbWUgPT09ICdwZXJmJyl7IGNvdW50VXAoKTsgYW5pbWF0ZUJhcnMoKTsgfQogIH0KICB0YWJzLmZvckVhY2goZnVuY3Rpb24odCl7CiAgICB0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgc2hvdyh0LmRhdGFzZXQucGFuZWwpOyB9KTsKICAgIHQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpewogICAgICB2YXIgbGlzdCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRhYnMpOwogICAgICB2YXIgaSA9IGxpc3QuaW5kZXhPZih0KTsKICAgICAgaWYoZS5rZXkgPT09ICdBcnJvd1JpZ2h0Jyl7IGUucHJldmVudERlZmF1bHQoKTsgbGlzdFsoaSsxKSVsaXN0Lmxlbmd0aF0uZm9jdXMoKTsgbGlzdFsoaSsxKSVsaXN0Lmxlbmd0aF0uY2xpY2soKTsgfQogICAgICBpZihlLmtleSA9PT0gJ0Fycm93TGVmdCcpeyBlLnByZXZlbnREZWZhdWx0KCk7IGxpc3RbKGktMStsaXN0Lmxlbmd0aCklbGlzdC5sZW5ndGhdLmZvY3VzKCk7IGxpc3RbKGktMStsaXN0Lmxlbmd0aCklbGlzdC5sZW5ndGhdLmNsaWNrKCk7IH0KICAgIH0pOwogIH0pOwoKICAvKiAtLS0tIGNvbnRleHQgc2xpZGVyIC0tLS0gKi8KICB2YXIgY3R4UmFuZ2UgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtY3R4cmFuZ2UnKTsKICB2YXIgY3R4VmFsID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbm1jLWN0eHZhbCcpOwogIHZhciBjdHhUaWVyID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbm1jLWN0eHRpZXInKTsKICBmdW5jdGlvbiB0aWVyRm9yKGspewogICAgaWYoayA8PSAxNikgcmV0dXJuICdhIHNpbmdsZSBmaWxlJzsKICAgIGlmKGsgPD0gMzIpIHJldHVybiAnYSBmZXcgbW9kdWxlcyc7CiAgICBpZihrIDw9IDY0KSByZXR1cm4gJ2Egc21hbGwgc2VydmljZSc7CiAgICBpZihrIDw9IDEyOCkgcmV0dXJuICdhIG1pZC1zaXplIGNvZGViYXNlJzsKICAgIGlmKGsgPD0gMjAwKSByZXR1cm4gJ2EgbGFyZ2UgcHJvamVjdCc7CiAgICByZXR1cm4gJ2EgbGFyZ2UgcmVwbyBpbiBvbmUgcHJvbXB0JzsKICB9CiAgZnVuY3Rpb24gdXBkYXRlQ3R4KCl7CiAgICB2YXIgayA9IHBhcnNlSW50KGN0eFJhbmdlLnZhbHVlLCAxMCk7CiAgICBjdHhWYWwudGV4dENvbnRlbnQgPSBrICsgJ0snOwogICAgY3R4VGllci50ZXh0Q29udGVudCA9IHRpZXJGb3Ioayk7CiAgfQogIGN0eFJhbmdlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdXBkYXRlQ3R4KTsKICB1cGRhdGVDdHgoKTsKCiAgLyogLS0tLSBwaXBlbGluZSAtLS0tICovCiAgdmFyIHN0YWdlcyA9IFsKICAgIFsnSW5wdXQgdG9rZW5zJywnVGV4dCBpcyB0b2tlbml6ZWQgYW5kIGZlZCB0byBhIGRlY29kZXItb25seSBUcmFuc2Zvcm1lci4gVGhlIG1vZGVsIGlzIHRleHQgaW4sIHRleHQgb3V0LiddLAogICAgWydEZW5zZSBsYXllcicsJ0Egc2luZ2xlIGRlbnNlIGxheWVyIHJ1bnMgYmVmb3JlIHRoZSBzcGFyc2UgbGF5ZXJzLCBnaXZpbmcgZXZlcnkgdG9rZW4gYSBzaGFyZWQgdHJhbnNmb3JtIGZpcnN0LiddLAogICAgWydBdHRlbnRpb24gKDM6MSknLCdTbGlkaW5nLXdpbmRvdyBhdHRlbnRpb24gd2l0aCBSb1BFIGlzIGludGVybGVhdmVkIHdpdGggZ2xvYmFsIGF0dGVudGlvbiB0aGF0IHVzZXMgbm8gcG9zaXRpb25hbCBlbWJlZGRpbmdzLCBpbiBhIDM6MSByYXRpby4nXSwKICAgIFsnTW9FIGJsb2NrJywnMTI4IGV4cGVydHMgcGVyIGJsb2NrOyBhIHNpZ21vaWQgcm91dGVyIHNlbGVjdHMgdGhlIHRvcCA4IGZvciBlYWNoIHRva2VuLiBFYWNoIGV4cGVydCBpcyBhbiBGRk4gd2l0aCBTd2lHTFUgYWN0aXZhdGlvbi4nXSwKICAgIFsnT3V0cHV0JywnVGhlIG1vZGVsIGVtaXRzIHRleHQsIHdpdGggbmF0aXZlIHRvb2wgdXNlIGFuZCBpbnRlcmxlYXZlZCB0aGlua2luZyBmb3IgYWdlbnRpYyBsb29wcy4gUG9zdC10cmFpbmVkIHZpYSB0d28tc3RhZ2UgU0ZUIHRoZW4gUkxWUi4nXQogIF07CiAgdmFyIHBpcGVCdG5zID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcubm1jLXN0YWdlJyk7CiAgdmFyIGRldGFpbCA9IHJvb3QucXVlcnlTZWxlY3RvcignI25tYy1kZXRhaWwnKTsKICBwaXBlQnRucy5mb3JFYWNoKGZ1bmN0aW9uKGIpewogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgIHBpcGVCdG5zLmZvckVhY2goZnVuY3Rpb24oeCl7IHguc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCdmYWxzZScpOyB9KTsKICAgICAgYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsJ3RydWUnKTsKICAgICAgdmFyIHMgPSBzdGFnZXNbcGFyc2VJbnQoYi5kYXRhc2V0LnN0YWdlLDEwKV07CiAgICAgIGRldGFpbC5pbm5lckhUTUwgPSAnPGg0PjwvaDQ PHA PC9wPic7CiAgICAgIGRldGFpbC5xdWVyeVNlbGVjdG9yKCdoNCcpLnRleHRDb250ZW50ID0gc1swXTsKICAgICAgZGV0YWlsLnF1ZXJ5U2VsZWN0b3IoJ3AnKS50ZXh0Q29udGVudCA9IHNbMV07CiAgICB9KTsKICB9KTsKCiAgLyogLS0tLSBNb0UgZXhwZXJ0IGdyaWQgLS0tLSAqLwogIHZhciBFWFBFUlRTID0gMTI4LCBBQ1RJVkUgPSA4OwogIHZhciBib3ggPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtZXhwZXJ0cycpOwogIHZhciBjZWxscyA9IFtdOwogIGZvcih2YXIgaT0wO2k8RVhQRVJUUztpKyspewogICAgdmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGQuY2xhc3NOYW1lID0gJ25tYy1leHAgZGltJzsKICAgIGQudGl0bGUgPSAnRXhwZXJ0ICcgKyAoaSsxKTsKICAgIGJveC5hcHBlbmRDaGlsZChkKTsgY2VsbHMucHVzaChkKTsKICB9CiAgdmFyIHNlZW4gPSB7fSwgdG9rZW5Db3VudCA9IDA7CiAgdmFyIGNvdiA9IHJvb3QucXVlcnlTZWxlY3RvcignI25tYy1jb3YnKTsKICB2YXIgY292TnVtID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbm1jLWNvdm51bScpOwogIHZhciB0b2tFbCA9IHJvb3QucXVlcnlTZWxlY3RvcignI25tYy10b2snKTsKICBmdW5jdGlvbiByb3V0ZSgpewogICAgdmFyIGlkeCA9IFtdOwogICAgd2hpbGUoaWR4Lmxlbmd0aCA8IEFDVElWRSl7CiAgICAgIHZhciByID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKkVYUEVSVFMpOwogICAgICBpZihpZHguaW5kZXhPZihyKSA9PT0gLTEpIGlkeC5wdXNoKHIpOwogICAgfQogICAgY2VsbHMuZm9yRWFjaChmdW5jdGlvbihjLGopewogICAgICB2YXIgb24gPSBpZHguaW5kZXhPZihqKSAhPT0gLTE7CiAgICAgIHZhciBiYXNlID0gc2VlbltqXSA/ICdzZWVuJyA6ICdkaW0nOwogICAgICBpZihyZWR1Y2UpeyBjLmNsYXNzTmFtZSA9ICdubWMtZXhwICcgKyAob24gPyAnYWN0aXZlJyA6IGJhc2UpOyByZXR1cm47IH0KICAgICAgYy5jbGFzc05hbWUgPSAnbm1jLWV4cCAnICsgYmFzZTsKICAgICAgaWYob24pIHNldFRpbWVvdXQoKGZ1bmN0aW9uKGNjKXsgcmV0dXJuIGZ1bmN0aW9uKCl7IGNjLmNsYXNzTmFtZSA9ICdubWMtZXhwIGFjdGl2ZSc7IH07IH0pKGMpLCA1MCk7CiAgICB9KTsKICAgIGlkeC5mb3JFYWNoKGZ1bmN0aW9uKGopeyBzZWVuW2pdID0gdHJ1ZTsgfSk7CiAgICB0b2tlbkNvdW50Kys7CiAgICB2YXIgdSA9IE9iamVjdC5rZXlzKHNlZW4pLmxlbmd0aDsKICAgIGNvdi5zdHlsZS53aWR0aCA9ICgodS9FWFBFUlRTKSoxMDApLnRvRml4ZWQoMSkgKyAnJSc7CiAgICBjb3ZOdW0udGV4dENvbnRlbnQgPSB1ICsgJyAvIDEyOCc7CiAgICB0b2tFbC50ZXh0Q29udGVudCA9IHRva2VuQ291bnQ7CiAgfQogIGZ1bmN0aW9uIHJlc2V0Q292KCl7CiAgICBzZWVuID0ge307IHRva2VuQ291bnQgPSAwOwogICAgY2VsbHMuZm9yRWFjaChmdW5jdGlvbihjKXsgYy5jbGFzc05hbWUgPSAnbm1jLWV4cCBkaW0nOyB9KTsKICAgIGNvdi5zdHlsZS53aWR0aCA9ICcwJSc7IGNvdk51bS50ZXh0Q29udGVudCA9ICcwIC8gMTI4JzsgdG9rRWwudGV4dENvbnRlbnQgPSAnMCc7CiAgfQogIHJvb3QucXVlcnlTZWxlY3RvcignI25tYy1yb3V0ZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcm91dGUpOwogIHJvb3QucXVlcnlTZWxlY3RvcignI25tYy1yZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgc3RvcEF1dG8oKTsgcmVzZXRDb3YoKTsgfSk7CiAgcm91dGUoKTsKCiAgLyogLS0tLSBhdXRvLXJvdXRlIC0tLS0gKi8KICB2YXIgYXV0b1RpbWVyID0gbnVsbDsKICB2YXIgYXV0b0J0biA9IHJvb3QucXVlcnlTZWxlY3RvcignI25tYy1hdXRvJyk7CiAgZnVuY3Rpb24gc3RvcEF1dG8oKXsgaWYoYXV0b1RpbWVyKXsgY2xlYXJJbnRlcnZhbChhdXRvVGltZXIpOyBhdXRvVGltZXIgPSBudWxsOyB9IGF1dG9CdG4uc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCdmYWxzZScpOyBhdXRvQnRuLnRleHRDb250ZW50ID0gJ0F1dG8nOyB9CiAgYXV0b0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZihhdXRvVGltZXIpeyBzdG9wQXV0bygpOyByZXR1cm47IH0KICAgIGF1dG9CdG4uc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCd0cnVlJyk7IGF1dG9CdG4udGV4dENvbnRlbnQgPSAnUGF1c2UnOwogICAgYXV0b1RpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgcm91dGUoKTsKICAgICAgaWYoT2JqZWN0LmtleXMoc2VlbikubGVuZ3RoID49IEVYUEVSVFMpeyBzdG9wQXV0bygpOyB9CiAgICB9LCByZWR1Y2UgPyA0MDAgOiA3NTApOwogIH0pOwoKICAvKiAtLS0tIGNvdW50LXVwIHN0YXRzIC0tLS0gKi8KICB2YXIgY291bnRlZCA9IGZhbHNlOwogIGZ1bmN0aW9uIGNvdW50VXAoKXsKICAgIGlmKGNvdW50ZWQpIHJldHVybjsgY291bnRlZCA9IHRydWU7CiAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ubWMtc3RhdCAubicpLmZvckVhY2goZnVuY3Rpb24oZWwpewogICAgICB2YXIgdGFyZ2V0ID0gcGFyc2VGbG9hdChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY291bnQnKSk7CiAgICAgIHZhciBwcmUgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4JykgfHwgJyc7CiAgICAgIHZhciBzdWYgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3VmZml4JykgfHwgJyc7CiAgICAgIHZhciBkZWMgPSAodGFyZ2V0ICUgMSAhPT0gMCkgPyAxIDogMDsKICAgICAgaWYocmVkdWNlKXsgZWwuaW5uZXJIVE1MID0gcHJlICsgdGFyZ2V0LnRvRml4ZWQoZGVjKSArIHN1ZjsgcmV0dXJuOyB9CiAgICAgIHZhciBzdGFydCA9IG51bGwsIGR1ciA9IDc1MDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYoIXN0YXJ0KSBzdGFydCA9IHRzOwogICAgICAgIHZhciBwID0gTWF0aC5taW4oKHRzIC0gc3RhcnQpL2R1ciwgMSk7CiAgICAgICAgdmFyIHYgPSAodGFyZ2V0ICogKDAuMiArIDAuOCpwKSkgKiAocDwxID8gMSA6IDEpOwogICAgICAgIGVsLmlubmVySFRNTCA9IHByZSArICh0YXJnZXQqcCkudG9GaXhlZChkZWMpICsgc3VmOwogICAgICAgIGlmKHAgPCAxKXsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOyB9IGVsc2UgeyBlbC5pbm5lckhUTUwgPSBwcmUgKyB0YXJnZXQudG9GaXhlZChkZWMpICsgc3VmOyB9CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfSk7CiAgfQoKICAvKiAtLS0tIHBlcmZvcm1hbmNlIGJhcnMgKyBtZXRyaWMgdG9nZ2xlIC0tLS0gKi8KICB2YXIgZmlsbEEgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtZmlsbC1hJyk7CiAgdmFyIGZpbGxCID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbm1jLWZpbGwtYicpOwogIHZhciBidkEgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtYnYtYScpOwogIHZhciBidkIgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtYnYtYicpOwogIHZhciBjYXAgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtY2FwJyk7CiAgdmFyIHNlZ1RwID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbm1jLXNlZy10cCcpOwogIHZhciBzZWdMYXQgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNubWMtc2VnLWxhdCcpOwogIHZhciBtZXRyaWMgPSAndHAnOwogIGZ1bmN0aW9uIHBhaW50QmFycygpewogICAgaWYobWV0cmljID09PSAndHAnKXsKICAgICAgZmlsbEEuc2V0QXR0cmlidXRlKCdkYXRhLXcnLCcxMDAlJyk7IGZpbGxCLnNldEF0dHJpYnV0ZSgnZGF0YS13JywnMzYlJyk7CiAgICAgIGJ2QS5pbm5lckhUTUwgPSAndXAgdG8gMi44JnRpbWVzOyc7IGJ2Qi5pbm5lckhUTUwgPSAnMS4wJnRpbWVzOyAoYmFzZWxpbmUpJzsKICAgICAgY2FwLnRleHRDb250ZW50ID0gJ0hpZ2hlciBpcyBiZXR0ZXInOwogICAgfSBlbHNlIHsKICAgICAgZmlsbEEuc2V0QXR0cmlidXRlKCdkYXRhLXcnLCc3MCUnKTsgZmlsbEIuc2V0QXR0cmlidXRlKCdkYXRhLXcnLCcxMDAlJyk7CiAgICAgIGJ2QS5pbm5lckhUTUwgPSAnMzAlIGxvd2VyJzsgYnZCLmlubmVySFRNTCA9ICdiYXNlbGluZSc7CiAgICAgIGNhcC50ZXh0Q29udGVudCA9ICdMb3dlciBpcyBiZXR0ZXInOwogICAgfQogICAgZmlsbEEuc3R5bGUud2lkdGggPSAnMCc7IGZpbGxCLnN0eWxlLndpZHRoID0gJzAnOwogICAgdmFyIGdvID0gZnVuY3Rpb24oKXsgZmlsbEEuc3R5bGUud2lkdGggPSBmaWxsQS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdycpOyBmaWxsQi5zdHlsZS53aWR0aCA9IGZpbGxCLmdldEF0dHJpYnV0ZSgnZGF0YS13Jyk7IH07CiAgICBpZihyZWR1Y2UpeyBnbygpOyB9IGVsc2UgeyBzZXRUaW1lb3V0KGdvLCA2MCk7IH0KICB9CiAgdmFyIGJhcnNSZWFkeSA9IGZhbHNlOwogIGZ1bmN0aW9uIGFuaW1hdGVCYXJzKCl7IGJhcnNSZWFkeSA9IHRydWU7IHBhaW50QmFycygpOyB9CiAgZnVuY3Rpb24gc2V0TWV0cmljKG0pewogICAgbWV0cmljID0gbTsKICAgIHNlZ1RwLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIG0gPT09ICd0cCcgPyAndHJ1ZSc6J2ZhbHNlJyk7CiAgICBzZWdMYXQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgbSA9PT0gJ2xhdCcgPyAndHJ1ZSc6J2ZhbHNlJyk7CiAgICBpZihiYXJzUmVhZHkpIHBhaW50QmFycygpOwogIH0KICBzZWdUcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IHNldE1ldHJpYygndHAnKTsgfSk7CiAgc2VnTGF0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgc2V0TWV0cmljKCdsYXQnKTsgfSk7CgogIC8qIC0tLS0gY29weSBjb2RlIC0tLS0gKi8KICB2YXIgY29weUJ0biA9IHJvb3QucXVlcnlTZWxlY3RvcignI25tYy1jb3B5Jyk7CiAgY29weUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICB2YXIgdHh0ID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbm1jLWNvZGVibG9jaycpLmlubmVyVGV4dDsKICAgIHZhciBkb25lID0gZnVuY3Rpb24oKXsgY29weUJ0bi50ZXh0Q29udGVudCA9ICdDb3BpZWQnOyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IGNvcHlCdG4udGV4dENvbnRlbnQgPSAnQ29weSc7IH0sIDE0MDApOyB9OwogICAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCl7CiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihkb25lKS5jYXRjaChkb25lKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7IHRhLnZhbHVlID0gdHh0OyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhKTsKICAgICAgdGEuc2VsZWN0KCk7IHRyeXsgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsgfWNhdGNoKGUpe30gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0YSk7IGRvbmUoKTsKICAgIH0KICB9KTsKfSkoKTsKPC9zY3JpcHQ Cgo8c2NyaXB0PgooZnVuY3Rpb24oKXsKICBmdW5jdGlvbiBwaW5nKCl7CiAgICB2YXIgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ210cC1ubWMnKTsgaWYoIWVsKSByZXR1cm47CiAgICBwYXJlbnQucG9zdE1lc3NhZ2Uoe3R5cGU6J210cC1ubWMtaGVpZ2h0JywgaGVpZ2h0OiBlbC5vZmZzZXRIZWlnaHQrNH0sICcqJyk7CiAgfQogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcGluZyk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHBpbmcpOwogIGlmKHdpbmRvdy5SZXNpemVPYnNlcnZlcil7IHRyeXsgbmV3IFJlc2l6ZU9ic2VydmVyKHBpbmcpLm9ic2VydmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ210cC1ubWMnKSk7IH1jYXRjaChlKXt9IH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IHNldFRpbWVvdXQocGluZywgNjApOyB9KTsKfSkoKTsKPC9zY3JpcHQ CjwvYm9keT4KPC9odG1sPgo=
Check out the Model weights and Technical details. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80438A Coding Implementation on Microsoft SkillOpt for Instrumented Prompt Optimization, Skill Evolution Analysis, and Baseline Comparisonhttps://www.marktechpost.com/2026/06/10/a-coding-implementation-on-microsoft-skillopt-for-instrumented-prompt-optimization-skill-evolution-analysis-and-baseline-comparison/
Wed, 10 Jun 2026 22:07:13 +0000https://www.marktechpost.com/?p=80433We implement an instrumented workflow for Microsoft SkillOpt end to end. We set up the repository, connect OpenAI-compatible model access, and configure the optimizer and target models. We evaluate the original seed skill as a baseline, then run a real optimization loop with rollout, reflection, aggregation, selection, updating, and validation-based gating. We inspect training history, visualize accuracy, edit-budget behavior, and token usage, then compare the evolved skill against the baseline.
The post A Coding Implementation on Microsoft SkillOpt for Instrumented Prompt Optimization, Skill Evolution Analysis, and Baseline Comparison appeared first on MarkTechPost.
]]>In this tutorial, we implement an instrumented workflow for Microsoft SkillOpt. We set up the SkillOpt repository, connect it to OpenAI-compatible model access, configure the optimizer and target models, and run the SearchQA optimization pipeline with a controlled sample limit to keep costs manageable. We first evaluate the original seed skill as a baseline, then run a real optimization loop in which SkillOpt improves the skill through rollout, reflection, aggregation, selection, updating, and validation-based gating. Along the way, we inspect the training history, visualize changes in accuracy, review edit-budget behavior, monitor cumulative token usage, and compare the evolved skill with the original baseline.
SkillOpt Environment Setup
Copy CodeCopiedUse a different Browser
We prepare the full Colab environment for running SkillOpt. We load the OpenAI API key, define the optimizer and target models, clone the SkillOpt repository, and install the required dependencies. We also configure the OpenAI-compatible backend so the SkillOpt scripts can communicate with the selected models.
Baseline Skill Evaluation
Copy CodeCopiedUse a different Browser
We define helper functions to run SkillOpt commands and extract evaluation accuracy from the output. We then locate the initial seed skill used by the SearchQA environment and evaluate it on the unseen validation split. This gives us a baseline result before any optimization or training takes place.
Training And Visualization
Copy CodeCopiedUse a different Browser
We run the main SkillOpt training loop with the selected optimizer and target models. We configure important training settings such as epochs, batch size, minibatch size, learning rate, slow update, meta-skill, and data limit. We then read the training history, visualize accuracy, edit-budget behavior, and cumulative token usage on a dashboard.
Inspecting Skill Evolution
Copy CodeCopiedUse a different Browser
We inspect how the skill evolves during the optimization process. We compare the first saved skill snapshot with the final best skill, check whether a protected slow-update block appears, and review one generated patch and one reflection analysis. We also list the slow-update and meta-skill artifacts created during epoch-level training.
Final Evaluation Comparison
Copy CodeCopiedUse a different Browser
We evaluate the final optimized best_skill.md file on the unseen validation split. We compare the trained skill’s hard-match score with the original baseline score to measure the improvement. We finish by printing the final lift and the path to the deployable optimized skill artifact.
Conclusion
In conclusion, we built a complete SkillOpt experiment that goes beyond simply starting a training command. We measured the baseline seed skill, optimized it using a stronger model as the optimizer and a smaller model as the target agent, and inspected how the skill evolved across training steps through saved snapshots, patches, reflections, slow updates, and meta-skill artifacts. We also generated a training dashboard that helps us understand whether the optimization process is improving performance and how much token usage accumulates during the run. By the end, we have a deployable best_skill.md file, a final evaluation on the unseen validation split, and a clear comparison between the original and optimized skills.
Check out the Full Codes with Notebook. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80433Google AI Releases DiffusionGemma, a 26B MoE Open Model Using Text Diffusion for Up to 4x Faster Generationhttps://www.marktechpost.com/2026/06/10/google-ai-releases-diffusiongemma-a-26b-moe-open-model-using-text-diffusion-for-up-to-4x-faster-generation/
Wed, 10 Jun 2026 18:50:51 +0000https://www.marktechpost.com/?p=80423DiffusionGemma is Google DeepMind's experimental 26B open model using text diffusion for up to 4x faster generation on GPUs.
The post Google AI Releases DiffusionGemma, a 26B MoE Open Model Using Text Diffusion for Up to 4x Faster Generation appeared first on MarkTechPost.
]]>Google AI team including the Google DeepMind researchers have just released DiffusionGemma, an experimental open model for text generation. It uses text diffusion instead of standard autoregressive decoding. The model ships under a permissive Apache 2.0 license. Google positions it for devs and researchers exploring speed-critical, interactive local workflows. Examples include in-line editing, rapid iteration, and generating non-linear text structures.
Most language models in use today are autoregressive. They generate one token at a time, left to right. Each new token depends on the token before it. DiffusionGemma works differently. It generates entire blocks of text simultaneously, in parallel. On dedicated GPUs, this delivers up to 4x faster generation.
What is DiffusionGemma
DiffusionGemma is a 26B Mixture of Experts (MoE) model. It activates only 3.8B parameters during inference. It is built on the Gemma 4 backbone, specifically the 26B-A4B architecture. Google integrated a diffusion head onto that base.
The model is multimodal. It processes interleaved text, image, and video inputs. It generates text outputs from those inputs. The context window is 256K tokens, and it supports 140+ languages.
Quantized, the model fits within 18GB of VRAM. That places it inside high-end consumer GPU limits. On a single NVIDIA H100, it reaches 1000+ tokens per second. On an NVIDIA GeForce RTX 5090, it reaches 700+ tokens per second.
Google is very direct about the trade-off. DiffusionGemma prioritizes speed and parallel layout generation. Its overall output quality is lower than standard Gemma 4. For maximum quality production work, Google still recommends autoregressive Gemma 4.
How Text Diffusion Works
Text diffusion borrows its core idea from AI image generators. Those models start with visual static and refine it iteratively. DiffusionGemma applies the same pattern to text generation.
The process runs in three conceptual stages. First, the model starts with a canvas of random placeholder tokens. Second, it makes multiple passes over that canvas. It locks in high-confidence tokens and uses them as context. Third, the text converges into the final output.
Google calls the core mechanism Uniform State Diffusion. Highly confident tokens help resolve adjacent positions during denoising. The full sequence then snaps into focus over several passes.
In practice, the model denoises a 256-token canvas in parallel. It finalizes roughly 15-20 tokens per forward pass. That parallelism is what drives the throughput gains.
The model uses bidirectional attention during denoising. Every token on the canvas can attend to every other token. This is a sharp break from autoregressive models. Those models can only look backward at prior tokens.
That bidirectional context enables real-time self-correction. If a token’s confidence drops, the sampler can re-noise it. The model then replaces that token on a later pass. Autoregressive models cannot do this, since they commit each token once.
The Architecture
The technical advancement here is hardware utilization. For local GPU inference, the main bottleneck is memory bandwidth. Autoregressive models repeatedly load weights from memory per token. During single-user serving, the GPU spends most time waiting.
DiffusionGemma shifts the bottleneck from memory bandwidth to compute. It drafts and refines a 256-token canvas in parallel. This gives idle tensor cores a large parallel workload.
The model alternates two attention modes during inference. Prefill uses causal attention to ingest the prompt and write the KV cache. Denoising uses bidirectional attention to refine the canvas.
For longer outputs, DiffusionGemma uses Block Autoregressive Diffusion. Once a 256-token block is fully denoised, it commits to the KV cache. The model then starts a fresh canvas conditioned on prior history. This pairs parallel block speed with sequential autoregressive stability.
The architecture shares the same backbone as Gemma 4 26B A4B. Developers mainly need to implement a denoising step. That makes integration into existing serving frameworks simpler.
A clear example is the Sudoku showcase from Google’s developer guide. Autoregressive models struggle with strict, multivariable constrained puzzles. The base DiffusionGemma model solves roughly 0% of Sudoku puzzles. After a simple JAX supervised fine-tuning recipe, correctness rises to 80%. The fine-tuned model also stops earlier, cutting inference steps.
Interactive Demo: How DiffusionGemma Decodes in Parallel
The interactive visualizer below illustrates how DiffusionGemma decodes text, contrasted with a standard autoregressive model. Toggle between the two modes and press Run. In Autoregressive mode, tokens fill in one at a time, strictly left to right, taking one forward pass per token — the way most LLMs generate today. In Diffusion mode, the model starts from a canvas of masked placeholder tokens and resolves many of them in parallel each pass, in no fixed order, converging in far fewer passes. The animation also shows a brief re-noise step, where a low-confidence token is reset and refined again — a stand-in for the real model’s self-correction, which autoregressive decoding cannot do once a token is committed. Note this is a conceptual animation, not live model output: the real DiffusionGemma resolves a 256-token canvas and finalizes roughly 15–20 tokens per forward pass.
Interactive · Illustrative
Watch DiffusionGemma Decode in Parallel
This is a conceptual animation of the denoising process — not live model output. The real model resolves a 256-token canvas, finalizing ~15–20 tokens per forward pass.
Diffusion (parallel)Autoregressive (sequential)
0 Forward passes
0 / 16 Tokens resolved
Diffusion Decoding mode
▶ RunResetPress Run to start.
Marktechpost
Practitioner-first AI/ML coverage — deep dives, model releases, and research, decoded for builders.
Use Cases
DiffusionGemma targets specific workloads, not general production quality. Google and ecosystem partners highlight several practical applications:
- In-line editing and code infilling: Bidirectional attention suits non-linear text structures well.
- Rapid iteration: Low local latency supports interactive, single-user developer loops.
- Long-context document analysis: The 256K window supports large input processing.
- OCR and document parsing: Multimodal input handles images and scanned documents.
- Code generation, tool calling, and agentic workflows: Unsloth lists these as supported tasks.
- Constrained generation: Sudoku, mathematical graphs, and amino acid sequences benefit from parallel attention.
One caveat shapes all of these. The speedup is designed for local, low-concurrency inference. In high-QPS cloud serving, autoregressive models saturate compute efficiently. There, parallel decoding offers diminishing returns and can raise serving costs.
DiffusionGemma vs Standard Gemma 4
| Attribute | DiffusionGemma (26B-A4B) | Standard Gemma 4 (26B A4B) |
|---|---|---|
| Generation method | Discrete text diffusion (parallel) | Autoregressive (token-by-token) |
| Decode bottleneck | Compute-bound | Memory-bandwidth-bound |
| Parallel unit | 256-token canvas per pass | One token per step |
| Attention during decode | Bidirectional | Causal (backward only) |
| Self-correction | Yes, via re-noising | No, tokens are committed once |
| Speed on dedicated GPU | Up to 4x faster | Baseline |
| H100 throughput | 1000+ tokens/sec | Lower (baseline) |
| RTX 5090 throughput | 700+ tokens/sec | Lower (baseline) |
| Output quality | Lower than Gemma 4 | Higher; recommended for production |
| Best fit | Local, low-concurrency, interactive | High-quality and high-QPS cloud serving |
| License | Apache 2.0 | Gemma terms |
Key Takeaways
- DiffusionGemma is a 26B MoE open model (3.8B active) that generates text via parallel diffusion, not token-by-token.
- It runs up to 4x faster on dedicated GPUs: 1000+ tokens/sec on H100, 700+ on RTX 5090.
- Bidirectional attention over a 256-token canvas enables real-time self-correction, unlike autoregressive models.
- Quantized, it fits in 18GB VRAM with day-zero support in vLLM, Transformers, MLX, and Unsloth.
- It's experimental and lower-quality than standard Gemma 4; Google recommends Gemma 4 for production.
Marktechpost’s Visual Explainer
Open Model · Apache 2.0
DiffusionGemma: A Visual Guide
Google DeepMind's 26B open text diffusion model — what it is and how it works.
1
What DiffusionGemma Is
An experimental open model that generates text via diffusion, not token-by-token.
- 26B Mixture of Experts (MoE) that activates only 3.8B parameters during inference.
- Built on the Gemma 4 backbone (26B-A4B) with a diffusion head added.
- Multimodal input — text, image, and video — generating text output.
- 256K context window, 140+ languages, released under Apache 2.0.
2
The Core Idea
Most LLMs are autoregressive. DiffusionGemma takes a different path.
- Autoregressive models generate one token at a time, left to right.
- Each new token depends on the token before it.
- DiffusionGemma generates entire blocks of text simultaneously, in parallel.
- On dedicated GPUs, this delivers up to 4x faster generation.
3
How Text Diffusion Works
It borrows from image diffusion: start with noise, refine iteratively.
1The canvas: the model starts with random placeholder tokens.
2Iterative refinement: it locks in confident tokens, using them as context.
3Final polish: the text converges into the output.
- Google calls the mechanism Uniform State Diffusion.
- It finalizes ~15–20 tokens per forward pass over a 256-token canvas.
4
The Architecture
The win is hardware utilization on local GPUs.
- Shifts the bottleneck from memory bandwidth to compute.
- Prefill uses causal attention to write the KV cache.
- Denoising uses bidirectional attention to refine the canvas.
- Block Autoregressive Diffusion handles sequences longer than 256 tokens.
- Bidirectional context enables real-time self-correction via re-noising.
5
Performance & Footprint
Throughput numbers and hardware limits from Google.
- 1000+ tokens/sec on a single NVIDIA H100.
- 700+ tokens/sec on an NVIDIA GeForce RTX 5090.
- Fits within 18GB VRAM when quantized.
- Native NVFP4 (4-bit floating-point) with near-lossless accuracy.
- Speedup is designed for local, low-concurrency inference.
6
DiffusionGemma vs Standard Gemma 4
| Attribute | DiffusionGemma | Gemma 4 |
|---|---|---|
| Generation | Diffusion (parallel) | Autoregressive |
| Bottleneck | Compute-bound | Memory-bandwidth |
| Attention | Bidirectional | Causal |
| Self-correction | Yes (re-noising) | No |
| Speed (GPU) | Up to 4x faster | Baseline |
| Output quality | Lower | Higher (production) |
7
Use Cases
Built for specific workloads, not general production quality.
- In-line editing and code infilling — suited to non-linear text.
- Long-context analysis, OCR, and document parsing.
- Code generation, tool calling, and agentic workflows.
- Constrained generation — Sudoku rose 0% to 80% after fine-tuning.
8
Availability & Tooling
Open weights with day-zero ecosystem support.
- Weights on Hugging Face: google/diffusiongemma-26B-A4B-it.
- The first diffusion LLM natively supported in vLLM.
- Also Transformers, MLX, and Unsloth; NeMo fine-tuning; llama.cpp soon.
- Deploy via Google Cloud Model Garden or NVIDIA NIM.
← Prev1 / 8Next →
Marktechpost
Practitioner-first AI/ML coverage — deep dives, model releases, and research, decoded for builders.
Check out the Model weights and Technical details. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80423Screenshot 2026-06-10 at 11.42.40 AMTop AI Coding Agents and Development Platforms in 2026: Atoms, Devin, Windsurf, Cursor, Warp, and More Comparedhttps://www.marktechpost.com/2026/06/10/ai-coding-agents-development-platforms-2026/ https://www.marktechpost.com/2026/06/10/ai-coding-agents-development-platforms-2026/#respondWed, 10 Jun 2026 10:24:17 +0000https://www.marktechpost.com/?p=68601Software development has changed. Engineers no longer type most code by hand. They describe intent, and AI agents do the work. Modern tools plan tasks, edit across files, run tests, and open pull requests. Many now ship to production with limited supervision. No single tool fits every need. This guide covers the AI coding agents […]
The post Top AI Coding Agents and Development Platforms in 2026: Atoms, Devin, Windsurf, Cursor, Warp, and More Compared appeared first on MarkTechPost.
]]>Software development has changed. Engineers no longer type most code by hand. They describe intent, and AI agents do the work. Modern tools plan tasks, edit across files, run tests, and open pull requests. Many now ship to production with limited supervision. No single tool fits every need. This guide covers the AI coding agents and platforms shaping development in 2026.
Developer Tools Guide
Top AI Coding Agents & Platforms — 2026
A practitioner’s field guide to the tools reshaping how software gets built.
Development has shifted from typing code by hand to describing intent and letting agents do the work. Today’s tools plan tasks, edit across files, run tests, open pull requests, and ship to production — with limited supervision.
No single tool fits every need. This guide walks through the platforms shaping AI-assisted development in 2026 — what each does and where it fits.
Use the arrows or dots below to explore →
★ Featured Pick
Atoms
Goes well beyond a single coding agent. Atoms deploys a coordinated team of AI agents — product management, system architecture, full-stack engineering, SEO, data analysis, and paid advertising. Describe a product in plain language and get a working, deployable app with user logins, data storage, and payments. Race Mode runs prompts across multiple models at once for the best output.
10% off with code MARKTECHPOST10
Autonomous Engineer
Devin AI
by Cognition
An autonomous AI software engineer, not an in-editor assistant. Give it a natural-language task or a linked ticket; it plans, then executes inside a sandboxed cloud environment with shell, browser, and editor. It runs subtasks in parallel, coordinates sub-agents, and opens pull requests. Best for well-defined bug fixes, features, and migrations.
In-Editor Assistant
GitHub Copilot
Real-time code suggestions and autocompletion, integrated directly into your editor. It predicts and generates snippets as you type, cutting boilerplate and keeping you in flow — and now extends into chat, pull request summaries, and agentic tasks. A strong default for incremental help inside an existing workflow.
UI Building
Magic Patterns
Builds user-interface components faster from prompts and references. A library of reusable patterns cuts the time spent on repetitive front-end work, so teams move from idea to a working interface prototype with less manual effort and stay focused on the harder parts of a project.
Agentic IDE
Windsurf
by Cognition
An agentic AI code editor built on a VS Code base. Its Cascade agent reads the whole repository, plans and applies multi-file edits, runs terminal commands, and verifies changes against tests — working across the project as a connected whole. Recent releases added parallel agent sessions and tighter integration with Cognition’s Devin.
Prototyping
Uizard AI
Focused on rapid prototyping for UI/UX designers. Turn text prompts, sketches, or screenshots into interactive prototypes, accelerating iteration and user testing. By lowering the barrier to clickable mockups, it helps teams validate concepts earlier and arrive at more user-centered designs before engineering begins.
Cloud IDE
Replit Agent
Brings coding automation into Replit’s browser-based environment. It scaffolds projects, writes and edits code, installs dependencies, and runs apps with no local setup — removing the overhead of configuring a dev environment. Well suited to SME workflows and going from prompt to running app in one place.
Evaluation & Observability
Galileo AI
An AI evaluation and observability platform rather than a code generator. Its Agentic Evaluations trace agents step by step, score tool-selection quality, detect errors in individual tool calls, and track session success, cost, and latency. Essential guardrails for teams shipping agents to production.
Terminal-Native
Warp
An agentic development environment born out of the terminal. Use Warp’s built-in coding agent or bring your own CLI agent (Claude Code, Codex, Gemini CLI). It runs and manages multiple agents in parallel, indexes Git codebases for context, and spans setup through shipping. Available on macOS, Windows, and Linux.
Design-to-Code
Lovable Dev
Specializes in converting designs into functional applications, bridging design and engineering. By turning visual layouts into working front-end code, it streamlines UI/UX development and tightens the handoff — letting designers and developers collaborate closely and bring designs to life with minimal manual coding.
Rapid Build
Bolt New
Known for a friendly interface and easy deployment, accessible to newcomers and experienced developers alike. It supports rapid prototyping in the browser and integrates with common environments, making it a low-friction path from idea to a shareable, running application during fast iteration cycles.
Multi-Framework UI
V0 Dev
Supports multiple front-end frameworks, giving developers flexibility to pick the right tools per project. Generated components and interfaces slot into your existing stack, reducing the cost of moving from prompt to usable UI — a versatile choice for diverse applications without framework lock-in.
AI-First Editor
Cursor
An AI-first editor designed to keep you in control of the codebase. It offers multi-file editing and codebase awareness alongside version control, code reviews, and collaboration — keeping changes organized and maintainable. Built for developers who want substantial AI help while retaining oversight of structure and quality.
Key Takeaways
What to remember
AI coding tools have moved past autocomplete — they plan, edit across files, test, and ship.
No single tool fits every job — pick by task: autonomous engineer, agentic IDE, evaluation, or full product platform.
Atoms stands out for end-to-end product building — a coordinated agent team, not just a code assistant.
Atoms ships deployable apps from a prompt — logins, storage, payments, plus Race Mode across models.
Recommendation: for the whole product lifecycle, start with Atoms — code MARKTECHPOST10 for 10% off.
‹1 / 15›
MARKTECHPOST
Practitioner-first AI/ML news, model releases & developer tools — trusted by 1M+ readers.
Atoms*
Atoms goes well beyond a single coding agent. It deploys a coordinated team of AI agents. These cover product management, system architecture, full-stack engineering, SEO, data analysis, and paid advertising. Describe a product in plain language. Atoms returns a working, deployable application. It includes user logins, data storage, and payment processing. Race Mode runs prompts across multiple models at once. It suits teams that want the full product lifecycle covered, not just the code. Try Atoms\* with code MARKTECHPOST10 for 10% off.
Devin AI
Devin is an autonomous AI software engineer from Cognition. It is not an in-editor assistant. Give it a task or a linked ticket. Devin first plans the work, then executes it. It runs in a sandboxed cloud environment with shell, browser, and editor. It runs subtasks in parallel and coordinates sub-agents. Devin then opens a pull request and iterates on feedback. It fits well-defined bug fixes, features, and codebase migrations. Learn more at Devin.
GitHub Copilot
GitHub Copilot provides real-time code suggestions and autocompletion. It integrates directly into the editor. It predicts and generates snippets as you type. This cuts boilerplate and keeps developers in flow. Copilot now extends into chat, pull request summaries, and agentic tasks. It remains a strong default for incremental, in-editor help. See GitHub Copilot.
Magic Patterns
Magic Patterns helps teams build UI components faster. It turns prompts and references into editable interfaces. A library of reusable patterns cuts repetitive front-end work. Teams reach a working prototype with less manual effort. This frees developers to focus on harder problems. Visit Magic Patterns.
Windsurf
Windsurf is an agentic AI code editor, now owned by Cognition. It is built on a VS Code base. Its Cascade agent reads the whole repository. Cascade plans and applies multi-file edits. It runs terminal commands and verifies changes against tests. Recent releases added parallel agent sessions and Devin integration. It suits developers who want a deeply AI-native IDE. See Windsurf.
Uizard AI
Uizard AI focuses on rapid prototyping for UI/UX designers. It turns text prompts, sketches, or screenshots into interactive prototypes. This speeds up iteration and user testing. Teams validate concepts earlier in the process. The result is more user-centered design before engineering begins. Visit Uizard.
Replit Agent
Replit Agent brings coding automation into a browser-based environment. It scaffolds projects, writes code, and installs dependencies. It also runs applications with no local setup. This removes the overhead of configuring a dev environment. It suits SME workflows and fast prompt-to-app loops. See Replit Agent.
Galileo AI
Galileo AI is an evaluation and observability platform. It is not a code generator. Its Agentic Evaluations trace agents step by step. They score tool-selection quality and detect tool-call errors. They also track session success, cost, and latency. Galileo adds essential guardrails for agents in production. Visit Galileo.
Warp
Warp is an agentic development environment built from the terminal. Use its built-in coding agent, or bring your own. It supports Claude Code, Codex, and Gemini CLI. Warp runs and manages multiple agents in parallel. It indexes Git codebases for context-aware responses. It runs on macOS, Windows, and Linux. See Warp.
Lovable Dev
Lovable Dev converts designs into functional applications. It turns visual layouts into working front-end code. This bridges design and engineering. The handoff becomes faster and cleaner. Designers and developers collaborate with minimal manual coding. Visit Lovable.
Bolt New
Bolt New is known for an easy interface and quick deployment. It suits both new and experienced developers. It supports rapid prototyping in the browser. Setup stays minimal during fast iteration. It offers a low-friction path from idea to a running app. See Bolt.
V0 Dev
V0 Dev supports multiple front-end frameworks. Developers pick the right tools for each project. Generated components slot into an existing stack. This reduces the cost of moving from prompt to usable UI. It avoids framework lock-in. Visit V0.
Cursor
Cursor is an AI-first editor that keeps you in control. It offers multi-file editing and codebase awareness. It also supports version control, reviews, and collaboration. Changes stay organized and maintainable. It fits developers who want strong AI help with oversight. See Cursor.
Comparison Table
Quick Compare
AI Coding Agents & Platforms — 2026
What each tool is, who it is for, and what sets it apart.
| Tool | Category | Best For | Standout Feature |
|---|---|---|---|
| ★ Atoms Featured Pick | Full product platform | End-to-end product building, code to launch | Coordinated AI agent team + Race Mode across models MARKTECHPOST10 — 10% off |
| Devin AI by Cognition | Autonomous engineer | Delegated, well-defined tasks and migrations | Plans and executes in a sandboxed cloud, opens PRs |
| GitHub Copilot | In-editor assistant | Incremental, in-editor help | Real-time suggestions and autocompletion |
| Magic Patterns | UI building | Fast UI component prototypes | Reusable component patterns from prompts |
| Windsurf by Cognition | Agentic IDE | Deeply AI-native development | Cascade agent with repo-wide multi-file edits |
| Uizard AI | Prototyping | Design ideation and user testing | Text, sketch, or screenshot to prototype |
| Replit Agent | Cloud IDE | Prompt-to-app with no local setup | Browser-based coding automation |
| Galileo AI | Evaluation & observability | Guardrails for agents in production | Step-by-step agent evaluations and tracing |
| Warp | Terminal-native ADE | Command-line workflows | Runs and manages multiple agents in parallel |
| Lovable Dev | Design-to-code | Design-to-app handoff | Turns visual layouts into front-end code |
| Bolt New | Rapid build | Quick prototypes, all skill levels | Easy deploy with minimal setup |
| V0 Dev | Multi-framework UI | Framework flexibility, no lock-in | Generates UI across multiple frameworks |
| Cursor | AI-first editor | Hands-on work with oversight | Multi-file edits with codebase awareness |
Swipe the table sideways to see all columns →
MARKTECHPOST
Practitioner-first AI/ML news, model releases & developer tools — trusted by 1M+ readers.
Conclusion
The AI coding landscape in 2026 spans many specialized tools. Options range from autonomous engineers to agentic IDEs and evaluation layers. The right choice depends on the job. Pick an autonomous engineer for delegated tasks. Pick an agentic IDE for hands-on development. Pick an evaluation layer for production agents. Pick an end-to-end platform to build whole products. These systems keep maturing quickly. Expect deeper integrations, stronger reliability tooling, and more capable agents ahead.
*we do make a small Affiliate commission by adding an affiliate url.
]]>https://www.marktechpost.com/2026/06/10/ai-coding-agents-development-platforms-2026/feed/068601Anthropic Releases Claude Fable 5 and Claude Mythos 5: Same Underlying Model, Different Safeguards, New Mythos-Class Tierhttps://www.marktechpost.com/2026/06/10/anthropic-releases-claude-fable-5-and-claude-mythos-5-same-underlying-model-different-safeguards-new-mythos-class-tier/
Wed, 10 Jun 2026 08:26:21 +0000https://www.marktechpost.com/?p=80415Claude Fable 5 ships generally available with classifiers; Mythos 5 stays limited, cyber safeguards lifted, through Project Glasswing.
The post Anthropic Releases Claude Fable 5 and Claude Mythos 5: Same Underlying Model, Different Safeguards, New Mythos-Class Tier appeared first on MarkTechPost.
]]>Anthropic released two models on June 9, 2026: Claude Fable 5 and Claude Mythos 5. Both belong to a tier called “Mythos-class.” This tier sits above the Opus class in capability. Fable 5 is the version claimed to be made safe for general use. Mythos 5 is the same model with some safeguards lifted, kept in limited release.
Claude Fable 5 and Mythos 5
Mythos-class models are a tier of Claude models. They sit above the Opus class in capability. The first was Claude Mythos Preview, released in April through Project Glasswing.
Fable 5 and Mythos 5 share the same underlying model. The difference is the safeguards. Fable 5 ships with safety classifiers for general use. Mythos 5 has some classifiers removed and stays in limited release.
The names reflect this split. “Fable” comes from the Latin fabula, “that which is told.” This is akin to the Greek mythos. The safeguards distinguish the two models, so they carry different names.
Anthropic team calls Fable 5 its most capable widely released model. It targets demanding reasoning and long-horizon agentic work. Anthropic states Fable 5’s capabilities exceed any model it has made generally available.
Both models support a 1M token context window by default. They allow up to 128k output tokens per request. Pricing is $10 per million input tokens and $50 per million output tokens. That is less than half the price of Claude Mythos Preview.
The Capability Case
Anthropic reports Fable 5 is state-of-the-art on nearly all tested capability benchmarks. It shows strong results across software engineering, knowledge work, vision, and scientific research. The longer and more complex the task, the larger its lead over Anthropic’s other models.
On software engineering, Stripe tested Fable 5 during early access. The model performed a codebase-wide migration in a 50-million-line Ruby codebase. According to Stripe: this took one day. By hand, a team would have needed over two months.
Fable 5 is also more token-efficient than past Claude models. On Cognition’s FrontierCode evaluation, Fable 5 scores highest among frontier models. This holds even at medium effort. The eval tests difficult coding tasks under production-codebase standards.
On knowledge work, Anthropic cites Hebbia’s Finance Benchmark for senior-level reasoning. Fable 5 posts the highest score of any model there. Gains come in document-based reasoning, chart and table interpretation, and problem solving.
On vision, Anthropic calls Fable 5 the new state-of-the-art. It can extract precise numbers from detailed scientific figures. It can rebuild a web app’s source code from screenshots alone. It also needs less scaffolding than prior models. Fable 5 beat Pokémon FireRed with a minimal, vision-only harness.
On memory and long-context, Fable 5 stays focused across millions of tokens. It improves its outputs using its own notes. In the game Slay the Spire, persistent file-based memory helped it three times more than Opus 4.8.
Mythos 5 carries the science claims. Internal protein design experts accelerated parts of drug design by around ten times. Anthropic also says Mythos 5 is its first model to consistently produce novel scientific hypotheses. Scientists preferred its molecular biology hypotheses around 80% of the time in blinded comparisons.
Mythos 5 also ran novel genomics research over a week of largely autonomous work. It trained a custom model on single-cell data spanning 138 animal species. Anthropic says that model outperformed a recent model published in Science, despite being 100 times smaller.
How the Safeguards Work
Releasing a model this capable carries risk. Without safeguards, Fable 5’s cybersecurity capabilities could be misused to cause serious damage. Anthropic therefore launched Fable 5 with a new set of classifiers.
Classifiers are separate AI systems. They detect potential misuse, including jailbreak attempts. They prevent the main model from responding to flagged requests.
When Fable 5’s classifiers flag a request, the response is handled by Claude Opus 4.8 instead. The covered areas are cybersecurity, biology and chemistry, and distillation. Users are informed whenever a fallback occurs.
For biology and chemistry, Fable 5 falls back to Opus 4.8 on most requests for now. Anthropic cites concern that the same dual-use queries could give uplift to malicious actors. It plans a trusted access program for biology, giving approved researchers Fable 5 without those safeguards.
Anthropic tuned these safeguards conservatively. They will sometimes catch harmless requests. On average, they trigger in less than 5% of sessions. Anthropic says more than 95% of Fable sessions involve no fallback at all. For those sessions, Fable 5’s performance effectively matches Mythos 5.
Anthropic red-teamed the classifiers extensively. An external bug bounty produced no universal jailbreaks in over 1,000 hours. A universal jailbreak lets a user interact with the model as if its safeguards were absent. Anthropic notes the UK AISI made progress toward one in a brief testing window.
Mythos 5 is the same model with cyber safeguards lifted. Anthropic describes it as having the strongest cybersecurity capabilities of any current model. It is deployed through Project Glasswing in collaboration with the US government.
Use Cases
These capabilities map to several concrete workflows for technical teams:
- Large-scale code migration: Long-horizon coding suits big refactors and cross-repo migrations. The Stripe example shows this at a 50-million-line scale.
- Agentic coding pipelines: Fewer turns and token efficiency help multi-step agent runs. GitHub reported autonomy and reliability on complex, long-horizon coding tasks.
- Finance and analytics work: Strong document and chart reasoning suits senior-level financial analysis. Hebbia and IMC cited gains on reasoning and trading-analysis tasks.
- Vision-to-code tasks: Rebuilding source from screenshots suits front-end reconstruction and figure extraction. The vision-only harness reduces tooling overhead.
- Long-running research agents: Persistent memory across millions of tokens suits multi-day research loops. Mythos 5 ran novel genomics work over a week of largely autonomous work.
Comparison Table: Fable 5 vs. Mythos 5 vs. Opus 4.8
| Attribute | Claude Fable 5 | Claude Mythos 5 | Claude Opus 4.8 |
|---|---|---|---|
| Model tier | Mythos-class | Mythos-class | Opus class |
| Underlying model | Same as Mythos 5 | Same as Fable 5 | Opus 4.8 |
| Availability | Generally available | Limited (Project Glasswing) | Generally available |
| Safety classifiers | Active (cyber, bio/chem, distillation) | Cyber safeguards lifted | Opus-level safeguards |
| Fallback target | Falls back to Opus 4.8 | Not applicable | Not applicable |
| API model ID | claude-fable-5 |
claude-mythos-5 |
(existing Opus ID) |
| Context window | 1M tokens default | 1M tokens default | Per Opus specs |
| Max output | 128k tokens/request | 128k tokens/request | Per Opus specs |
| Input price (per 1M) | $10 | $10 | (per Opus pricing) |
| Output price (per 1M) | $50 | $50 | (per Opus pricing) |
| Thinking mode | Adaptive only, always on | Adaptive only, always on | Configurable |
| Data retention | 30-day (Covered Model) | 30-day (Covered Model) | Standard options |
Note: Specific Opus 4.8 specs and pricing are not detailed in the Fable 5 launch sources. The table marks those cells accordingly.
Key Takeaways
- Fable 5 and Mythos 5 share one underlying model; safeguards are the only difference.
- Anthropic reports Fable 5 is state-of-the-art on nearly all tested capability benchmarks.
- Fable 5 classifiers fall back to Opus 4.8 and trigger in under 5% of sessions.
- Both models offer a 1M token context window at $10 input and $50 output per million tokens.
- Mythos 5 stays limited to Project Glasswing; Fable 5 is generally available across major platforms.
Sentiments of the Community
Fable 5 Launch Sentiment
Live
AllTwitterHNLinkedInAny moodPositiveNeutralNegative
| Src | Author / Post | Theme | Reach | Sentiment |
|---|
40 postsNet +0.47****75% positiveTwitter · HackerNews · LinkedIn
Check out the Technical details, Docs and Sentiments Analytics from the AI Community. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80415Building a Code Dataset Pipeline from NVIDIA Nemotron-Pretraining-Code-v3 Metadata with Streaming, Pandas, and tiktokenhttps://www.marktechpost.com/2026/06/09/building-a-code-dataset-pipeline-from-nvidia-nemotron-pretraining-code-v3-metadata-with-streaming-pandas-and-tiktoken/
Wed, 10 Jun 2026 04:52:33 +0000https://www.marktechpost.com/?p=80412In this tutorial, we work with NVIDIA's Nemotron-Pretraining-Code-v3 dataset as a large-scale metadata index for code pretraining research. We stream the dataset instead of downloading it, inspect its schema, and build a manageable sample. We analyze languages, file extensions, repository frequency, and directory depth to understand the index structure. We then reconstruct raw GitHub URLs, fetch real source files, and estimate the token scale of the fetched code.
The post Building a Code Dataset Pipeline from NVIDIA Nemotron-Pretraining-Code-v3 Metadata with Streaming, Pandas, and tiktoken appeared first on MarkTechPost.
]]>In this tutorial, we work with NVIDIA’s Nemotron-Pretraining-Code-v3 dataset as a large-scale metadata index for code pretraining research. Instead of downloading the full multi-gigabyte dataset, we stream it, inspect its schema, and build a manageable sample for analysis. We then explore the dataset by studying languages, file extensions, repository frequency, and directory depth, which helps us understand how the index is structured. After that, we reconstruct the raw GitHub URLs from the metadata, attempt to fetch the actual source files, and estimate the token scale of the fetched code. By the end of the workflow, we create a reusable filtered sample and save processed outputs for further experimentation.
Streaming the NVIDIA Nemotron-Pretraining-Code-v3 Dataset and Inspecting Its Schema
Copy CodeCopiedUse a different Browser
We set up the Colab environment by installing the required libraries and importing the tools needed for dataset streaming, analysis, and visualization. We define the NVIDIA Nemotron-Pretraining-Code-v3 dataset ID, discover the available dataset configuration, and load the training split in streaming mode. We also inspect the dataset schema and print the first record to understand the structure before conducting deeper analysis.
Building a Shuffled Sample and Analyzing Code Metadata Features
Copy CodeCopiedUse a different Browser
We create a shuffled sample from the streamed dataset so that we do not rely only on the first clustered rows. We convert the sampled records into a Pandas DataFrame and derive useful features such as file extension, path depth, and file name. We then examine the most common languages, file extensions, repositories, and path-depth statistics to better understand the sampled metadata.
Visualizing Languages, File Extensions, Directory Depth, and Repository Frequency
Copy CodeCopiedUse a different Browser
We visualize the main patterns found in the sampled metadata using multiple plots. We compare the top languages, top file extensions, directory nesting depth, and most frequent repositories in the sample. We use these charts to make the dataset easier to interpret and to quickly identify dominant structures inside the metadata index.
Reconstructing Raw GitHub URLs and Fetching Real Source Files
Copy CodeCopiedUse a different Browser
We reconstruct raw GitHub URLs from the metadata: the repository name, commit ID, and relative file path. We then attempt to fetch a few real source files from GitHub, gracefully handling missing, deleted, private, or oversized files. We preview one successfully fetched file to see how the metadata index connects back to the actual code content.
Filtering Python Files, Estimating Token Scale, and Saving Outputs
Copy CodeCopiedUse a different Browser
We filter the sampled index for Python files and estimate token counts for successfully fetched files. We use tiktoken when available and fall back on a simple character-based estimate when it is not. Also, we save the processed metadata sample and the fetched code outputs so we can reuse them later without having to stream the dataset again.
Conclusion
In conclusion, we built a practical end-to-end workflow to understand and use the Nemotron-Pretraining-Code-v3 metadata index. We learned how to stream the dataset efficiently, convert a sample into a DataFrame, perform exploratory analysis, visualize important patterns, and reconstruct GitHub file URLs from repository paths and commit identifiers. We also demonstrated how metadata can be traced back to the source code and how token estimation provides a sense of dataset scale.
Check out the Full Codes with Notebook. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80412Google Releases Gemini 3.5 Live Translate, a Streaming Speech-to-Speech Audio Model Covering 70+ Languages Across Meet, Translate, and the Live APIhttps://www.marktechpost.com/2026/06/09/google-releases-gemini-3-5-live-translate-a-streaming-speech-to-speech-audio-model-covering-70-languages-across-meet-translate-and-the-live-api/
Tue, 09 Jun 2026 17:24:11 +0000https://www.marktechpost.com/?p=80409Gemini 3.5 Live Translate streams speech-to-speech translation across 70+ languages. It generates audio continuously, staying a few seconds behind the speaker. The model reaches developers via the Gemini Live API, plus Google Meet and the Translate app.
The post Google Releases Gemini 3.5 Live Translate, a Streaming Speech-to-Speech Audio Model Covering 70+ Languages Across Meet, Translate, and the Live API appeared first on MarkTechPost.
]]>Google just announced Gemini 3.5 Live Translate. It is their latest audio model for live speech-to-speech translation. Speech-to-speech means spoken audio goes in, and translated spoken audio comes out. The model detects over 70 languages automatically and generates translated speech. It preserves the speaker’s intonation, pacing, and pitch in the output. Turn-by-turn systems wait for a speaker to finish before responding. Gemini 3.5 Live Translate generates speech continuously instead. It balances a trade-off between waiting for context and translating immediately. More context improves quality. Faster output keeps the translation in sync with the speaker. The result stays a few seconds behind the speaker throughout a session.
Gemini 3.5 Live Translate
Gemini 3.5 Live Translate is a single audio model (gemini-3.5-live-translate-preview), not a chat assistant. It processes speech as the audio streams in, rather than after a full sentence. It handles multilingual inputs without manually configuring settings. Its noise robustness lets applications run in loud, unpredictable environments.
The model is rolling out across three surfaces. Developers get it in public preview through the Gemini Live API and Google AI Studio. Enterprises get a private preview in Google Meet starting this month. Everyone else gets it through the Google Translate app on Android and iOS.
How the Continuous Streaming Works
The design difference matters for building real-time features. A conversational Live agent uses turn-based interactions. It relies on pauses, intent detection, and interruption handling. Live Translation uses continuous stream processing instead. It translates as the speaker talks, without waiting for turns to end.
To hold strict real-time latency thresholds, the translation path accepts audio input only. Text input is not supported in translation mode. The model also drops tool use and system instructions in this mode. That keeps it a focused translator pipeline rather than a general agent.
Building With the Live API
Developers configure translation inside the Live API session setup. You set a translationConfig block within the generationConfig. The targetLanguageCode field takes a BCP-47 code, such as "pl" or "es". BCP-47 is the standard format for language tags like en or pt-BR. It defaults to "en". The echoTargetLanguage boolean controls input that is already in the target language. When true, the model echoes that speech. When false, it stays silent. You can also enable inputAudioTranscription and outputAudioTranscription for text transcripts.
Audio formats are fixed. Input is raw 16-bit PCM at 16kHz, mono, little-endian. Output is raw 16-bit PCM at 24kHz, mono, little-endian. PCM is uncompressed raw audio. You send audio in chunks of 100ms. For client-side apps, ephemeral tokens on the v1alpha endpoint avoid exposing your API key.
| Dimension | Live Agent | Live Translation |
|---|---|---|
| Model role | Assistant that listens, reasons, and acts | Interpreter / real-time translator pipeline |
| Interaction | Turn-based, with interruption handling | Continuous stream processing, no turns |
| Tools | Function calling, Google Search, instructions | Translation only, no tools or instructions |
| Inputs | Text, audio, video, and image | Audio only, for strict latency |
| Configuration | Generation, speech, tools, instructions | targetLanguageCode and echoTargetLanguage |
Use Case
The model targets live interpretation across several settings. Google lists multilingual calls, meetings, lessons, and broadcasts. Developer platforms reduce the integration work for real-time media. Agora, Fishjam, LiveKit, Pipecat, and Vision Agents already use the Live API. These platforms handle the complex real-time media streaming infrastructure. That lets developers focus on the user experience instead.
Google’s example app demonstrates dubbing and simultaneous multi-language translation. Grab is testing the model for driver-and-traveler communication at pickups. Grab users make over 10 million voice calls per month. CJ ENM, LiveKit, and others reported positive feedback on quality, accuracy, and low latency.
How It Changes Google Meet and Translate
According to Google’s official release, Google Meet will soon use 3.5 Live Translate for speech translation. The table shows the stated before-and-after for Meet.
| Capability | Previous Meet | With 3.5 Live Translate |
|---|---|---|
| Languages | 5 | 70+ |
| Combinations per meeting | Only to and from English | 2000+ combinations |
| Access | Existing interface | Updated interface for instant access |
The Meet update is in private preview for select business Workspace customers this month. A broader rollout follows later this year. In the Translate app, the Live translate feature works with any connected headphones. It mirrors the speaker’s tone across 70+ languages. Android also gains a listening mode. You hold the phone to your ear like a regular call. The translated audio then streams through the earpiece, without others hearing.
Key Takeaways
- Gemini 3.5 Live Translate is Google’s latest audio model for live speech-to-speech translation across 70+ languages.
- It streams continuously instead of turn-by-turn, staying a few seconds behind the speaker.
- Developers can configure it via the Live API using
targetLanguageCodeandechoTargetLanguage; audio-only, 16kHz in, 24kHz out. - It rolls out to the Gemini Live API, Google Meet (5→70+ languages), and the Translate app.
- All generated audio carries an imperceptible SynthID watermark for detectability.
Check out the Model Card and Technical details. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.
]]>80409