Marimo Pair - A Canvas for Agent + Developers Collaboration
This episode, that wall comes down. marimo pair drops a coding agent right inside a running notebook, with full access to every variable Python is holding in memory. The notebook becomes a shared canvas. You point, it runs the code. You tell it to zoom in on the Picasso paintings, and the chart just updates. No MCP tools to wire up, no schema to describe. Just Python, and an agent that can finally see what you see. Trevor Manz is back to walk us through it.
Episode Deep Dive
Guest Introduction and Background
Trevor Manz returns to Talk Python for his second appearance, a year after his episode on AnyWidget. Trevor is a software engineer and visualization researcher who completed a PhD in bioinformatics at Harvard Medical School, where he built interactive visualization and analysis tools for biologists working with genomics and other biological data. He is the creator of AnyWidget, a widely used open source specification and toolkit for building interactive UI elements that plug deeply into Python environments like Jupyter and marimo. Today he is a founding engineer at marimo, the company behind a new kind of reactive Python notebook, where he leads the work on marimo pair and also owns the marimo VS Code extension. In this conversation he walks Michael through marimo pair, an agent skill that drops a coding agent directly inside a running marimo kernel so it can see and drive live in-memory state, not just the files on disk.
What to Know If You're New to Python
This episode sits at the intersection of data science notebooks and AI coding agents, so a little grounding in how each of those works will help you follow along. You do not need to be an expert, but knowing the vocabulary of cells, kernels, and agents will make the ideas click.
- Computational notebooks: A notebook is an interactive document made of cells that you run one at a time, mixing code, output, and notes. Tools like Jupyter, Google Colab, and marimo let you load data, run a cell, look at the result, and decide your next step, which is central to the "look at the live state" theme of this episode.
- The kernel and in-memory state: Behind a notebook is a running Python process called the kernel that holds your variables, data frames, and other values in memory. marimo pair's whole idea is giving an agent access to that live state, so understanding that the kernel is where your loaded data actually lives is key.
- Data frames: A data frame is a table-like structure (rows and columns) that libraries like pandas, Polars, and Ibis use to hold and manipulate data. Trevor repeatedly describes an agent inspecting a data frame's schema, columns, and row counts instead of guessing from a CSV on disk, so knowing what a data frame is helps a lot.
- Coding agents and skills: A coding agent is an AI tool (Claude Code, Codex, OpenCode, and others) that can read files, run commands, and edit code on your behalf in a loop. A "skill" is a small folder of Markdown instructions that teaches an agent how to use a new capability, and marimo pair ships as exactly that kind of skill.
- REPL versus running a script: A REPL (read-eval-print loop) keeps state alive so you can inspect and iterate on values, unlike a plain script that runs start to finish and forgets everything. The episode leans on this difference to explain why notebooks are a better environment for data work than editing files and rerunning scripts.
Key Points and Takeaways
marimo pair drops a coding agent inside a live notebook kernel The central idea of the episode is marimo pair, an agent skill that places a coding agent directly inside an active marimo kernel rather than leaving it to edit files on disk. It exposes a single tool, essentially "run Python in the running kernel," which lets the agent inspect intermediate values, list variables, look at cell outputs, and also author the notebook by creating, editing, and running cells. Because the agent works against live state, it can do anything a human could do in a marimo notebook and gets instant feedback about what went right or wrong. Trevor frames this as extending the agent's working environment with a notebook, the same way humans adopted notebooks for data work, instead of treating the notebook as just a data source to query. The notebook becomes a shared canvas where you point and the agent runs the code. This is the shift the whole conversation orbits around.
Why notebooks were awkward for agents before this Coding agents got very good at traditional software development, where the file system is the source of truth: edit files, run stateless commands like tests, let the agent loop and self-correct. Data work does not fit that model. When you point an out-of-the-box agent at a notebook, it edits the file, can push the notebook into an inconsistent state, and often cannot see the results of the actions it just performed. Trevor and Michael describe how a Jupyter .ipynb file bundles cell source together with all the saved output as JSON, so an agent skimming a file may wade through thousands of lines of stale or irrelevant output with no guarantee it reflects the current run order. Trevor's reframe is that for notebooks, the file format is more the artifact of the work than the source of it, and the real authoring happens in the editor combined with the live state. That missing context is exactly what marimo pair restores.
marimo is a reactive, Python-first notebook Before the new tool, Trevor gives a refresher on marimo itself. It is spiritually a computational notebook like Jupyter or Google Colab, but hyper-focused on the Python ecosystem, right down to storing notebooks as plain Python files instead of .ipynb JSON. Its defining feature is reactivity: marimo understands your notebook by the data flow between cells, not the order you wrote them, tracking which variables each cell declares and where they are used. When you rerun a cell, it reruns the descendant cells that depend on it, and if you redeclare a variable it tells you, eliminating the hidden-state and stale-order problems that plague traditional notebooks. This offloads the mental bookkeeping that otherwise falls on the user and guarantees that someone else can reliably reproduce your results. That same set of constraints turns out to be a gift when an agent is the one building the notebook.
One "run Python" tool beats a pile of JSON tools Rather than expose a set of narrow MCP or JSON endpoints, marimo pair gives the agent a single capability: run arbitrary Python in the kernel. Under the hood this talks to a semi-private marimo API that Trevor calls code mode, which lets the agent grab the current notebook state and call primitives like list variables, inspect cells, create cell, edit cell, and run cell, plus niceties like a toast notification confirming it is connected to your session. Because the interface is Python and not a fixed JSON schema, the agent can compose those primitives freely, for example calling create cell five times inside a loop to build multiple cells at once. Trevor compares each tool invocation to running python -c, except it picks up exactly where you left off in your notebook and can reference variables already in memory. That composability is a real advantage of handing the model a programming language instead of a rigid API.
Runtime inspection changes model behavior and token economics Giving the agent live values, not just source code, meaningfully changes how it works. Instead of reading a line like pd.read_csv(...) and then having to go open the CSV to understand it, the agent can hold the actual data frame and ask about its schema, columns, data types, and row count directly. That means you can be more declarative, saying something like "plot the quantitative axes in a pair plot" without spelling out which columns those are, because the agent looks up the schema itself. Michael and Trevor also dig into the token side: the skill is a slim Markdown file, and the agent can focus on one cell or one variable rather than printing the entire notebook into context. Trevor's framing is that you offload context into Python and the kernel instead of stuffing it into the model's context buffer. They had not run a formal benchmark, but both expect it to be considerably more efficient, and it lets the model get into tight, self-correcting loops around real values.
Shipping as a skill, deliberately decoupled from marimo's internals marimo pair is distributed as an agent skill, a folder containing a skill.md file that teaches the agent where the tool lives and the mental model for driving marimo, and little else. Crucially, the skill does not hard-code marimo's API. Instead it instructs the agent to run a help command that prints the tool's own doc strings at runtime, so the agent learns the current capabilities live in the session. This decoupling means marimo can evolve its API without forcing every user to update their skill, avoiding the painful case where someone upgrades marimo but not the skill and gets a degraded experience. Michael notes how neat that is, since getting people to update skills is always tricky. Trevor says they became conscious of that version-drift risk very early and designed around it to guarantee a baseline experience.
Multiple install paths, and a fun Deno-on-PyPI story A skill is just files on disk, so there are several ways to install marimo pair. If you use npm you can run npx skills add marimo-team/marimo-pair, which walks you through installing into Claude Code, Codex, or OpenCode, either locally or globally. If you do not have npm, you can drive the same thing through uv with uvx deno, which shells out to Deno to install the skill. Claude Code users can also register a marketplace so the tool prompts them to upgrade the plugin when new versions ship. Trevor recommends the marketplace route for mostly-Claude Code users and npx or uvx for people who hop between many agent harnesses. In a fun tangent, Trevor reveals he personally went through PyPI's formal naming process to acquire the deno package name and then transferred it to the Deno team, because being able to share tooling across the Python and Node or Deno ecosystems without forcing a second package manager on users matters to him. Deno, he explains, is a server-side JavaScript runtime from Node's original creator, built with browser-like, fine-grained permissions.
Hands-on and headless workflows, and why cell-by-cell wins marimo pair supports a spectrum from very hands-on to fully headless. The hands-on flow is exploratory: spin up a notebook, load a data set, and iteratively prompt the agent to make plots and decide where to go next while you watch the outputs. The headless flow is more fire-and-forget: kick off one or several marimo pair sessions to work on a problem, then connect later to inspect what the agent built. A key insight is that driving through marimo pair forces the agent to build the notebook cell by cell, the way a human would, loading data first, then checking nulls, and correcting errors at each step. That is very different from one-shotting a whole notebook and only trying to run it at the end, which tends to produce a well-formed but possibly meaningless artifact. Because marimo's constraints require the notebook to actually run as it is built, Trevor says you get much higher quality outputs.
Meet the agents where they are, do not compete with them Michael shares a chart from The Pragmatic Engineer's "AI tooling for software engineers in 2026" showing Claude Code far in the lead, followed at a distance by others like GitHub Copilot, Cursor, and Codex, a dramatic reversal from a year earlier. Both agree that building a rival in-notebook chatbot and asking developers to abandon the agent they already love is a losing strategy. marimo still has a bring-your-own-LLM chat integration, and you can even use the marimo pair tools from it, but the strategic bet is to make marimo a great tool for whatever agent you already use. Trevor frames an agent as a model plus its tools plus the environment or loop it runs in, so an agent is only as capable as the tools you give it; if marimo is not one of those tools, a data question just becomes a folder of throwaway scripts. By exposing the environment instead of owning the interface, marimo sidesteps the constant churn of models, subscriptions, and provider restrictions.
A richer, more visual pairing canvas than a terminal Because the agent is connected to a live kernel, the interaction becomes much more like real pair programming than typing into a terminal. Trevor describes selecting a region on a plot during exploratory data analysis and simply asking "what did I just select here," letting the agent map that selection back against the data frame and answer. In the integrated browser inside VS Code or Cursor, you can click a plot to capture a screenshot and feed it as visual context, so multimodal models can reason about the actual rendered output, not just the code. Michael connects this to the everyday editor habit of highlighting a few lines and asking "what's wrong with this," where focus becomes context automatically. The payoff is that "what if" questions about your data become cheap the way coding experiments became cheap, so you follow curiosities you previously would have talked yourself out of. The name "pair" is earned: you can gesture at something on screen instead of laboriously describing a file.
A gentle on-ramp that skips the annoying parts of data wrangling Michael is candid that he is not a fan of vibe coding, but he sees marimo pair as a genuinely good on-ramp into notebooks and programming. Trevor tells the story of helping his dad look at data trapped in an Excel file, normally a chore of hand-writing a parser to pull out the right table ranges. Dragging the Excel file into marimo pair and asking the agent to load three tables turned an hour of fiddling into a minute or two, freeing him to focus on the interesting part of making plots and communicating results. The broader point is that Python's rich ecosystem is a Swiss Army knife for ingesting data, and you can lean on the agent to get data into a usable shape without memorizing the exact API to select the third sheet of a spreadsheet. Because marimo has deterministic execution order, you can even let someone vibe code the data-loading step while reserving the careful work of cleaning, plotting, and modeling for yourself. It automates the bespoke, tedious formatting so you spend your attention where it matters.
Remote kernels and molab on CoreWeave GPUs The design also works across machines. Behind the scenes the tool call runs through a bash script called execute code that accepts a swappable URL, so instead of localhost you can point your local agent at a remote marimo kernel with authentication. That lets you keep Claude Code running on your laptop while the actual computation and sandbox live on a bigger machine in the cloud, for example one with GPUs. Trevor points to molab, marimo's cloud-hosted notebook service, recently relaunched on CoreWeave infrastructure with GPUs for the community. Inside molab you can click "pair with an agent," copy a small command, and connect your local Claude Code or Codex to that remote sandbox to start pair programming against cloud compute. It is a clean separation: drive locally, execute remotely.
The roadmap: tighter VS Code integration and real-time collaboration Trevor owns marimo's VS Code extension, which reuses VS Code's native notebook UI but renders marimo outputs, and he was days away from shipping the ability for the built-in VS Code agent to drive those notebook outputs too. The larger direction is to let people spin up and collaborate on reproducible marimo notebooks from wherever they already drive agents, whether the terminal, the VS Code chat panel, the Claude Code or Codex extension, or eventually desktop apps like Claude Desktop or Codex Desktop. Michael floats the missing "Google Docs for agents" idea, multiple people each with their own agent buddy all working in one shared session, and Trevor confirms marimo is building real-time collaboration features where multiple people and agents could talk to the same marimo kernel. No matter which UI wins, the artifact you are left with is a reproducible Python program, useful even after you turn the agent off. That durable, shareable notebook is the throughline of marimo's whole strategy.
Interesting Quotes and Stories
"marimo pair is an agent skill that drops an agent inside of an active marimo kernel." -- Trevor Manz
"For notebooks, these file formats are more the artifact of the work rather than the source necessarily of the code." -- Trevor Manz
"You can think of each invocation of the tool that we provide to the agent as essentially running Python dash C, except picking up wherever you left off inside of your notebook." -- Trevor Manz
"It boggles the mind, like how much Claude Code just relies on grep to understand projects. And it seems super inefficient to me." -- Michael Kennedy
"There's always the what is now well-known Sasspocalypse because Claude shipped 13 Markdown files which wiped 285 billion dollars off of the stock market. So there's something to these Markdown files." -- Michael Kennedy
"An agent by definition is like a model, the tools that you equip that model with, and then its environment or the loop that it runs in to perform that task. And so its effectiveness is going to be limited by whatever tools you give that agent." -- Trevor Manz
"I actually got the deno name from the Deno folks so we could transfer over that package. Being able to share packages between ecosystems without having to reinstall a new package manager, I think is really, really important." -- Trevor Manz
"I was actually trying to help my dad look at some data that he had in Excel. Being able to just drag the Excel file over into marimo pair and saying, hey, can you just load these three tables, maybe that would have taken me an hour to do by hand before, and it took a couple minutes for the agent." -- Trevor Manz
"Whether you knew how to write Python code or you don't know how to write Python code, you're able to produce this reproducible artifact for your data analysis." -- Trevor Manz
Key Definitions and Terms
- marimo pair: An agent skill that connects a coding agent to a running marimo kernel, giving it a single "run Python" tool to inspect live values and author, edit, and run cells.
- Reactive notebook: A notebook that understands cells by their data-flow relationships rather than top-to-bottom order, automatically rerunning dependent cells and preventing hidden or stale state. This is marimo's core model.
- Kernel: The running Python process behind a notebook that holds variables and data in memory. marimo pair's advantage comes from operating inside this live kernel.
- code mode: marimo's semi-private, agent-facing API that the "run Python" tool uses to read notebook state and call mutation primitives like create cell, edit cell, and run cell.
- Agent skill: A folder of Markdown instructions (a skill.md file) that teaches a coding agent how to use a new capability, portable across agents that support the Agent Skills standard.
- Data frame: A table-like data structure with rows and columns, provided by libraries such as pandas, Polars, and Ibis, and rendered as an interactive table inside marimo.
- EDA (exploratory data analysis): The iterative practice of loading data and inspecting it through summaries and plots to find patterns before committing to an analysis.
- molab: marimo's cloud-hosted notebook service, relaunched on CoreWeave infrastructure with GPUs, where you can pair a local agent with a remote sandbox.
- Deno: A server-side JavaScript runtime created by Node's original author, built with fine-grained, browser-like permissions; used here as an alternative to npm for installing the skill.
- Vibe coding: Loosely prompting an agent to generate working code without closely directing the implementation, discussed here as a useful on-ramp for the tedious data-loading steps.
Learning Resources
If this episode has you wanting to go deeper on notebooks, data work, and pairing with AI coding agents, here are a few Talk Python Training courses that fit the topics Trevor and Michael covered.
- Agentic AI Programming for Python: Learn to work effectively with agentic, tool-using AI like Claude and Cursor, including the guardrails and workflows that turn AI into a real force multiplier, which is the exact style of collaboration marimo pair brings into notebooks.
- Just Enough Python for Data Scientists: Build the core Python and software-engineering habits, including reproducibility, that let you move from ad-hoc notebook scripts to reliable, shareable data work, echoing the reproducible-artifact theme of this episode.
- Polars for Power Users: Get fluent with Polars data frames and fast, expressive data wrangling, the kind of in-memory tables the agent inspects and plots throughout the conversation.
Overall Takeaway
The quiet revolution in this episode is a change of vantage point. For a couple of years, coding agents have thrived where the file system is the source of truth, but data work does not live on disk; it lives in memory, in the data frame you just loaded and the plot you just brushed a selection over. marimo pair closes that gap by handing the agent a single, powerful tool, run Python in the running kernel, so it can finally see what you see, build a notebook cell by cell the way a careful analyst would, and correct itself against real values instead of guessing from stale output. Just as important is the strategic humility behind it: rather than fight Claude Code, Codex, and the rest for control of the chat box, marimo makes itself an excellent tool that any agent can drive, and it leaves you with a reproducible Python notebook whether or not an agent was ever involved. If you have felt the friction of pointing an AI agent at a notebook and watching it flail, this is the missing piece, and it is worth grabbing the skill, dragging in a messy data set, and asking your agent to start plotting. The notebook is becoming a shared canvas, and this episode is a clear look at what that collaboration can feel like.
Links from the show
Course transcripts announcement: talkpython.fm/blog
anywidget: Jupyter Widgets made easy: talkpython.fm
marimo: marimo.io
blog: marimo.io
GitHub: github.com
given this: martinalderson.com
llms.txt: talkpython.fm
mcp: talkpython.fm
cli: talkpython.fm
open issues: github.com
Discord: marimo.io
Marimo Pair: marimo.io
OpenCode: opencode.ai
AI Tooling for Software Engineers in 2026: newsletter.pragmaticengineer.com
Watch this episode on YouTube: youtube.com
Episode #555 deep-dive: talkpython.fm/555
Episode transcripts: talkpython.fm
Theme Song: Developer Rap
🥁 Served in a Flask 🎸: talkpython.fm/flasksong
---== Don't be a stranger ==---
YouTube: youtube.com/@talkpython
Bluesky: @talkpython.fm
Mastodon: @talkpython@fosstodon.org
X.com: @talkpython
Michael on Bluesky: @mkennedy.codes
Michael on Mastodon: @mkennedy@fosstodon.org
Michael on X.com: @mkennedy
Episode Transcript
Collapse transcript
00:00
00:03
00:07
00:08
00:11
00:14
00:18
00:20
00:24
00:26
00:33
00:35
00:38
00:41
00:49
00:53
01:17
01:22
01:24
01:28
01:30
01:33
01:36
01:39
01:43
01:43
01:47
01:52
01:56
01:59
02:02
02:10
02:14
02:16
02:17
02:19
02:24
02:30
02:35
02:40
02:43
02:50
02:54
02:56
03:00
03:03
03:06
03:09
03:11
03:13
03:19
03:24
03:26
03:31
03:37
03:47
03:49
03:54
03:56
04:04
04:07
04:10
04:12
04:13
04:19
04:19
04:20
04:21
04:22
04:23
04:24
04:26
04:30
04:31
04:36
04:38
04:43
04:49
04:55
04:58
05:03
05:05
05:11
05:19
05:24
05:33
05:37
05:39
05:40
05:43
05:45
05:49
05:52
05:54
05:57
06:01
06:05
06:11
06:14
06:20
06:30
06:32
06:37
06:43
06:48
06:52
06:57
06:59
07:00
07:02
07:03
07:07
07:13
07:16
07:20
07:27
07:30
07:34
07:38
07:40
07:42
07:42
07:43
07:49
07:50
07:51
07:54
07:56
08:01
08:05
08:10
08:14
08:18
08:24
08:28
08:30
08:34
08:38
08:42
08:44
08:46
08:47
08:51
08:56
08:57
08:59
09:03
09:10
09:12
09:16
09:19
09:27
09:31
09:33
09:40
09:46
09:51
09:57
10:02
10:07
10:13
10:15
10:20
10:24
10:27
10:30
10:35
10:39
10:45
10:49
10:55
10:57
11:03
11:06
11:11
11:21
11:26
11:31
11:32
11:34
11:37
11:43
11:47
11:51
11:56
12:00
12:07
12:12
12:17
12:24
12:28
12:33
12:37
12:41
12:48
12:52
12:57
13:01
13:07
13:11
13:16
13:22
13:27
13:31
13:37
13:40
13:45
13:51
13:58
14:05
14:09
14:14
14:19
14:25
14:29
14:32
14:36
14:39
14:43
14:45
14:49
14:55
14:59
15:04
15:09
15:15
15:20
15:22
15:27
15:28
15:32
15:34
15:37
15:39
15:44
15:50
15:55
15:59
16:05
16:10
16:17
16:22
16:30
16:36
16:39
16:44
16:48
16:50
16:55
17:02
17:03
17:04
17:07
17:07
17:11
17:13
17:17
17:20
17:23
17:28
17:31
17:34
17:40
17:44
17:48
17:57
18:04
18:08
18:11
18:14
18:15
18:21
18:27
18:30
18:34
18:38
18:40
18:43
18:46
18:53
19:00
19:05
19:11
19:18
19:22
19:30
19:33
19:37
19:40
19:42
19:44
19:50
19:53
19:55
19:55
19:57
20:03
20:04
20:07
20:08
20:08
20:13
20:18
20:19
20:24
20:25
20:31
20:36
20:41
20:46
20:51
20:57
21:02
21:04
21:07
21:11
21:15
21:17
21:20
21:23
21:35
21:50
21:54
21:57
21:59
22:00
22:08
22:13
22:19
22:20
22:26
22:31
22:34
22:38
22:41
22:45
22:50
22:55
23:00
23:03
23:06
23:10
23:13
23:17
23:19
23:20
23:23
23:27
23:31
23:35
23:38
23:41
23:47
23:51
23:52
23:56
23:56
23:57
23:57
24:00
24:05
24:10
24:16
24:23
24:27
24:40
24:41
24:44
24:48
24:53
24:59
25:06
25:10
25:12
25:20
25:26
25:35
25:38
25:44
25:48
25:52
25:53
25:56
26:01
26:03
26:08
26:12
26:18
26:25
26:35
26:41
26:43
26:47
26:49
26:51
26:54
26:56
27:00
27:03
27:08
27:13
27:17
27:19
27:20
27:23
27:24
27:25
27:30
27:32
27:37
27:41
27:45
27:51
27:56
28:01
28:06
28:12
28:18
28:24
28:29
28:35
28:39
28:44
28:47
28:50
28:53
28:55
29:01
29:05
29:09
29:12
29:15
29:18
29:23
29:28
29:30
29:36
29:42
29:44
29:50
29:52
29:56
30:01
30:05
30:08
30:11
30:17
30:23
30:26
30:30
30:38
30:42
30:48
30:54
30:58
31:04
31:11
31:16
31:24
31:33
31:34
31:36
31:38
31:42
31:45
31:50
31:55
31:57
32:00
32:05
32:06
32:09
32:11
32:15
32:16
32:19
32:24
32:25
32:31
32:35
32:42
32:45
32:50
32:56
33:00
33:07
33:13
33:15
33:20
33:24
33:28
33:32
33:38
33:43
33:46
33:51
33:54
33:59
34:02
34:05
34:08
34:11
34:17
34:20
34:25
34:30
34:32
34:35
34:38
34:42
34:45
34:49
34:50
34:53
34:55
34:58
35:02
35:04
35:05
35:09
35:13
35:15
35:17
35:20
35:21
35:24
35:25
35:31
35:33
35:40
35:43
35:47
35:53
35:55
36:00
36:03
36:05
36:11
36:13
36:14
36:20
36:24
36:28
36:33
36:41
36:49
36:53
36:56
37:01
37:07
37:12
37:14
37:19
37:24
37:28
37:29
37:36
37:41
37:45
37:50
37:55
38:00
38:05
38:10
38:14
38:20
38:23
38:28
38:32
38:36
38:41
38:46
38:51
38:56
38:59
39:00
39:05
39:09
39:14
39:20
39:21
39:25
39:31
39:34
39:36
39:38
39:39
39:44
39:48
39:52
39:58
40:00
40:06
40:08
40:11
40:17
40:21
40:26
40:29
40:32
40:37
40:40
40:45
40:50
40:51
40:53
40:54
40:59
41:07
41:11
41:16
41:22
41:25
41:26
41:30
41:34
41:42
41:44
41:56
41:59
42:03
42:10
42:24
42:34
42:43
42:48
42:53
42:58
43:03
43:12
43:16
43:22
43:25
43:29
43:36
43:37
43:39
43:44
43:48
43:51
43:55
43:59
44:05
44:11
44:13
44:15
44:21
44:26
44:32
44:38
44:44
44:52
45:01
45:04
45:08
45:09
45:11
45:16
45:22
45:23
45:28
45:30
45:34
45:36
45:42
45:46
45:52
45:58
46:03
46:09
46:13
46:18
46:22
46:26
46:30
46:36
46:40
46:44
46:49
46:55
47:01
47:04
47:05
47:09
47:13
47:16
47:19
47:26
47:30
47:35
47:37
47:38
47:42
47:44
47:46
47:48
47:54
47:58
48:03
48:09
48:15
48:20
48:24
48:31
48:32
48:39
48:41
48:43
48:50
48:53
48:55
48:58
49:02
49:08
49:14
49:19
49:22
49:31
49:46
49:48
49:53
49:55
49:58
49:59
50:00
50:05
50:10
50:15
50:19
50:24
50:28
50:34
50:40
50:43
50:46
50:51
50:56
50:59
51:01
51:05
51:07
51:11
51:16
51:20
51:22
51:27
51:29
51:32
51:35
51:40
51:46
51:52
51:57
52:03
52:08
52:10
52:11
52:13
52:16
52:17
52:21
52:25
52:28
52:31
52:34
52:38
52:41
52:46
52:49
52:53
52:57
53:00
53:01
53:04
53:07
53:08
53:10
53:13
53:16
53:18
53:22
53:23
53:24
53:26
53:31
53:33
53:34
53:35
53:38
53:42
53:45
53:48
53:53
53:55
53:58
54:03
54:04
54:11
54:15
54:23
54:28
54:33
54:36
54:40
54:45
54:47
54:52
54:56
54:59
55:01
55:06
55:09
55:11
55:13
55:14
55:18
55:20
55:24
55:28
55:31
55:37
55:41
55:46
55:50
55:54
55:58
56:02
56:07
56:12
56:19
56:24
56:28
56:29
56:30
56:32
56:38
56:39
56:43
56:49
56:54
56:59
57:03
57:06
57:11
57:15
57:17
57:18
57:23
57:24
57:28
57:35
57:39
57:43
57:45
57:45
57:49
57:54
57:58
57:59
58:00
58:05
58:11
58:15
58:20
58:25
58:29
58:31
58:37
58:39
58:42
58:47
58:51
58:55
58:58
59:01
59:03
59:07
59:10
59:14
59:20
59:22
59:25
59:30
59:34
59:37
59:40
59:43
59:47
59:48
59:50
59:51
59:53
59:53
59:55
59:56
01:00:00
01:00:02
01:00:06
01:00:11
01:00:13
01:00:17
01:00:21
01:00:23
01:00:25
01:00:27
01:00:30
01:00:32
01:00:35
01:00:37
01:00:39
01:00:44
01:00:47
01:00:50
01:00:52
01:00:55
01:00:56
01:00:58
01:01:03
01:01:04
01:01:08
01:01:09
01:01:12
01:01:16
01:01:18
01:01:24
01:01:28
01:01:34
01:01:37
01:01:40
01:01:42
01:01:47
01:01:51
01:01:53
01:01:58
01:02:00
01:02:04
01:02:10
01:02:14
01:02:19
01:02:24
01:02:25
01:02:27
01:02:29
01:02:30
01:02:38
01:02:41
01:02:46
01:02:47
01:02:49
01:02:51
01:02:53
01:02:56
01:03:00
01:03:06
01:03:08
01:03:13
01:03:16
01:03:16
01:03:18
01:03:20
01:03:23
01:03:24
01:03:25
01:03:27
01:03:30
01:03:30
01:03:32
01:03:34
01:03:37
01:03:40
01:03:48
01:03:51
01:03:57
01:04:01
01:04:04
01:04:07
01:04:09
01:04:13
01:04:15
01:04:16
01:04:18
01:04:21
01:04:23
01:04:25
01:04:26
01:04:28
01:04:41 Thank you.


