Great Docs
Panelists
Episode Deep Dive
Guests Introduction and Background
Rich Iannone is a software engineer at Posit (PBC) with a long open source track record in the R world before pivoting to Python over the last few years. He is best known as the creator of the R package GT, which he ported to Python as Great Tables, and now as the author of Great Docs, the documentation tool at the center of this episode. Rich has a distinctive eye for design and authorship, and he tends to obsess over the small details (mascots, filter bars, Markdown export buttons) that turn an okay tool into a delightful one.
Michael Chow is also a software engineer on the Posit open source team, where he has spent about four years working full-time on Python tooling. He is the author of QuartoDoc, an earlier API reference generator that sits closer to the bare metal of Quarto, and is used by projects like Ibis. Michael has done a deep dive into the history of Python docs tooling, and he plays an interesting "engineer with style sensibilities" foil to Rich's "wild card" energy on this project.
What to Know If You're New to Python
This episode lives in the intersection of Python packaging, documentation tooling, and the new world of AI-readable docs. A little background on how Python projects expose their APIs and how doc sites typically get built will help most of the discussion click.
- Docstrings and API reference: Python lets you attach a string just under a function, class, or module to describe how it works. Doc generators read these "docstrings" and turn them into a browsable API reference. Great Docs builds this section automatically when you point it at a package.
- Static site generators: A static site generator turns source files (usually Markdown) into plain HTML, CSS, and JS that any web host can serve. Sphinx, MkDocs, Hugo, Quarto, and Great Docs all output static sites, so they can be deployed to GitHub Pages, Netlify, Vercel, or your own NGINX server with no application runtime needed.
- Markdown vs reStructuredText: Markdown is the lightweight syntax most developers know. reStructuredText (RST) is the older, more rigid format Sphinx historically used. Great Docs leans on Markdown so both humans and LLMs can read pages easily, while older tools like Sphinx still center on RST.
- LLM-friendly docs: Modern docs need to serve agents like Claude Code and Codex as well as humans. That means shipping a clean Markdown version of every page, an
llms.txtindex, and clear CLI examples so an AI can read your library quickly and accurately. - Quarto and computational documents: Quarto is Posit's open source publishing system. It treats Markdown files as documents with executable code cells, so the code in your docs actually runs at build time and its output appears beside it. Great Docs uses Quarto as its rendering engine under the hood.
Key Points and Takeaways
Great Docs is a new Python documentation tool that ships polished sites in three commands
Great Docs is Rich Iannone's brand new project that aims to fill a "pkgdown-sized hole" in the Python docs ecosystem. The promise is that you can point it at a Python package, run great-docs init, great-docs build, and great-docs preview, and immediately get a serviceable site with an auto-generated API reference, a user guide, and a config file you can grow into. It is opinionated by design, with Rich's sense of style baked in, so you get something good-looking by default and can customize from there. Rich tested it against many different package layouts so introspection works across a wide range of packaging conventions. The whole tool is built on top of Quarto, but Quarto is held back as an implementation detail rather than something you have to learn first.
Documentation now has two audiences: humans and AI agents
A central theme of the conversation is that every doc site today serves both a human reader and an LLM trying to make sense of your library. Great Docs leans hard into this by shipping a Markdown copy of every page, exposing a "view as Markdown" button, supporting .md URLs, generating an llms.txt index, and including an llms-full.txt that mashes the entire docs into a single file for context loading. Michael Kennedy points out he added similar features to talkpython.fm so Claude Code, Codex, and other agents could navigate the 7.5 million words of podcast content. Rich frames this bluntly: the goal is to make the docs nice for humans but also genuinely consumable by LLMs and agents.
Sphinx is the original Python doc site builder, with deep history and real friction
Michael Chow walks through the historical context where Python's own docs reportedly moved from LaTeX to Sphinx, which then powered API docs for huge projects like Pandas and Polars. Sphinx has been a "zero to one" leap for the ecosystem, and the term "how-to" itself migrated into Python docs from the Linux documentation tradition. The friction point today is reStructuredText, which most newer open source developers no longer reach for. Seeing an .rst file is described as a rite of passage that brings "a little tear" to Michael Kennedy's eye. Great Docs is part of a generational shift toward Markdown-first authoring.
The landscape: MkDocs, Zensical, Mintlify, Hugo, and Quarto each occupy different corners
The group surveys the neighbors. MkDocs is the popular Markdown-based alternative to Sphinx, often used with the Material theme. Zensical (covered in an earlier episode with Martin Donath) is a more modern offering that is compatible with Material for MkDocs but aims toward general purpose knowledge bases. Mintlify spans documentation across many languages but stretches toward general-purpose marketing sites too. Hugo and Ghost are general static site generators where you can jam your docs in if you do not need API reference automation. Quarto, made by Posit, handles sites, documents, books, and presentations with executable code cells across R, Python, Julia, and more.
Quarto is the executable foundation underneath Great Docs
Quarto is an open source publishing system from Posit that supports computational notebooks, where Markdown files can contain code cells with engines for R, Python, Julia, and others. At build time, those cells execute and their outputs (tables, plots, results) are embedded into the rendered page. This is what made the Great Tables docs so powerful: a code snippet and the actual generated table appear together without a copy-paste step. Quarto also ships features like tab sets for multi-OS install instructions, citations, cross-references, and a deep extension system. Great Docs uses Quarto extensively but tries to hide it so authors do not have to learn Quarto first.
The "freeze" feature solves the live-data and slow-benchmark problem
Because Quarto runs code at build time, you can hit awkward edge cases: maybe the code touches a live API whose results change, maybe it accesses keys only present on your personal machine, or maybe a benchmark takes too long to rerun on CI. Quarto's freeze mechanism caches the outputs so you can rebuild the site without re-executing the code. Michael Chow notes Great Tables uses freeze for its growing log of blog posts so they do not have to be regenerated every release. Rich confirmed Great Docs works around the ephemeral nature of the build directory so freeze still works cleanly even when you treat outputs as disposable.
Versioned docs, tab sets, and the little touches that show Rich's design eye
Great Docs ships with a long list of "I would never have thought of that" details that elevate it above bare bones API generators. There is a live filter bar on the API reference page that filters items as you type. There is a dedicated section for CLI documentation, reflecting that AI agents like Claude Code now love command line interfaces. There is a Markdown copy button at the top of every page. There is a version selector driven by git tags so you can publish docs for v0.1 alongside the current release, and the older versions actually show the smaller API surface they had at the time. Tab sets let you cleanly show "Mac / Linux / Windows" install instructions inside a single page region.
Rich's design DNA comes from Great Tables, and ultimately from Tufte and a 1949 census manual
Michael Chow describes Rich as Posit's "wild card" with a freaky sense of style, and the Great Tables work is the proof. Great Tables broke a table into named components like header, stub, stub head, spanners, and source notes, and many of those names were lifted from a 1949 US Census manual on tabular presentation that Rich found scanned as a PDF on the web. The same Tufte-flavored "just the right amount of ink" instinct shows up in Great Docs, where Rich obsesses over things like search-as-you-type and clean Markdown export. Sparklines, the Tufte invention of tiny in-cell trend lines, show up here too as the canonical example of compressing meaning into the smallest possible space.
Get-started workflow is intentionally tiny: init, build, preview, watch
Rich walks through the quick start: install Great Docs and Quarto, then run great-docs init to generate a great-docs.yaml config tuned to your package layout. Then great-docs build produces a great-docs/ directory containing the rendered site, and great-docs preview spins up a local web server with your default browser pointed at it. For iterative authoring there is great-docs build --watch, which behaves like the Hugo workflow: edit a Markdown file and the site rebuilds quickly. Once you are happy you wire it into CI and start customizing the config or adding folders like a "recipes" section that appear in the top nav.
Skills and MCP-aware docs point at where the agentic ecosystem is heading
Rich is leaning into agentic AI as a first-class audience. Great Docs has a great-docs skill install workflow that lets library authors publish Claude Code-style skills and lets users browse and install them right from the docs site. The roadmap also includes documenting MCP servers, which do not have function-by-function structure like a normal Python library, so they need a different presentation that covers tools, prompts, and the JSON shape of the protocol. Rich described this as trying to be "a little bit ahead" of where docs are going. The result is a doc tool that treats agents pointing at your site as a real workflow, not an afterthought.
Open source sustainability at Posit comes from boring enterprise tools
Asked how Posit pays for a team of dozens of full-time open source engineers, Michael Chow's favorite answer is "a bunch of boring enterprise tools." Posit Connect and Posit Teams solve unglamorous but very real problems for organizations: how to host Jupyter notebooks, RStudio sessions, and scheduled reports for data teams that may not have a dedicated DevOps function. Those products fund the maintainers, who then can stay with projects like Great Tables and Quarto for years, giving them real long-term stability. Rich points out he has been working on this lineage of tools since 2017 when GT first started in R, which adds real credibility that the projects will not be abandoned.
Doc tooling is a small collaborative ecosystem, not a winner-takes-all war
Michael Chow specifically calls out Timothée Mazzucotelli (GitHub handle pawamoy), the maintainer of upstream tools like Griffe and mkdocstrings, as a great example of cross-project collaboration. Posit's tools and others all depend on the same upstream parsers and introspection libraries, and the maintainers contribute PRs to each other's projects. They may technically compete at the surface level, but they share infrastructure under the hood. The takeaway for users: when you adopt one of these tools, you are joining a small community of passionate maintainers who actually talk to each other at PyCon.
Deployment is dead simple: it is just static files
Because the output is a self-contained site directory, you can host Great Docs anywhere that serves static files. Rich provides hints for GitHub Pages, Netlify, Vercel, and similar services in the docs. Michael Kennedy shares that he runs his static sites on a regular server with NGINX because, surprisingly, that has been more reliable for him than some cloud hosts. The bigger point: keeping the deployment story boring (a site folder plus a static host) avoids the cascading failures that come with stacks of interdependent services.
Interesting Quotes and Stories
"It feels like a bizarro situation. I know what I could be doing, what I should be doing, theoretically. But things just don't jive sometimes." -- Rich Iannone, on switching from R to Python
"Rich just has this crazy, freaky sense of style. People at Posit just never know what Rich is going to pull out. He's our wild card." -- Michael Chow
"Naming things is so important, otherwise you're just awkwardly describing something over and over again. Like that cell to the top left or these cells off to the side. And eventually you just have to give it a name, even if it's not the best name. These are actually names I stole from a census manual on tables, I think written in 1949." -- Rich Iannone
"If I see an RST file, it's just a little tear wells up in my eye. I'm like, oh gosh, here we go." -- Michael Kennedy
"I have a lot of bizarre experience looking at the history of Python docs." -- Michael Chow
"It's basically just nicing up the docs and making them good for humans, but also consumable by LLMs or agents and such." -- Rich Iannone
"How does Posit pay the bills for people to work on open source? My favorite thing to say is we have a bunch of boring enterprise tools. And no shade on Posit, I actually think that this is the best case scenario." -- Michael Chow
The Tablin origin story is a small gem of the episode. Two years ago while preparing a PyCon talk, Michael Chow noticed a little anthropomorphized spreadsheet character had appeared in the slide deck, popping out from the side of a table to cheer the reader on. "Who's this spreadsheet with eyes and a mouth cheering people on?" Rich's answer was deadpan: "It's Tablin, of course." Tablin is now positioned as a sort of Clippy descendant, "much cooler because he's a table" and shows up just to help and then disappear.
Key Definitions and Terms
- Great Docs: A new Python documentation tool from Rich Iannone at Posit that generates polished doc sites with an auto-built API reference, user guide, version selector, and LLM-friendly Markdown exports from a single config file.
- Great Tables: Rich's earlier Python library for composing publication-quality display tables from data frames, with support for titles, subtitles, spanners, stub heads, source notes, and formatted cells.
- GT: The original R package by Rich that became the design template for Great Tables. Active since 2017.
- Quarto: Posit's open source publishing system. Renders Markdown documents, books, sites, and presentations with executable code cells across multiple languages.
- QuartoDoc: A separate, more bare-bones API reference generator for Quarto built by Michael Chow, used by projects like Ibis.
- pkgdown: The R-ecosystem doc generator that inspired the "point it at your package and get something serviceable" ethos of Great Docs.
- Sphinx: The original dominant Python doc site builder. Powers python.org, Pandas, and Polars docs, traditionally written in reStructuredText.
- reStructuredText (RST): The older lightweight markup language used by Sphinx, less popular with newer open source developers than Markdown.
- MkDocs: A Markdown-based Python documentation site generator, frequently paired with the Material for MkDocs theme.
- Material for MkDocs: The popular themed framework on top of MkDocs that Zensical aims to be compatible with.
- Zensical: A modern, scalable technical writing platform compatible with Material for MkDocs, heading toward general-purpose knowledge bases.
- Mintlify: A general-purpose documentation platform that supports many languages but extends beyond pure docs.
- mkdocstrings: Upstream tool maintained by pawamoy that pulls Python docstrings into MkDocs sites.
- Griffe: Upstream Python static analysis library, also maintained by pawamoy, that powers introspection in QuartoDoc, Great Docs, and other tools.
- llms.txt: A proposed standard, originated by Jeremy Howard, for an LLM-readable Markdown index of a website, analogous to robots.txt and sitemap.xml but aimed at AI agents.
- llms-full.txt: A companion to llms.txt that concatenates a project's complete docs into a single Markdown file LLMs can ingest in one go.
- Freeze: A Quarto mechanism that caches the outputs of computational cells so you do not re-execute code on every build.
- Tab sets: A Quarto authoring primitive for tabbed UI within a single content area (e.g. Mac / Linux / Windows install instructions).
- Sparkline: A small, in-line trend line with no axis labels, popularized by Edward Tufte, used in table cells to show direction at a glance.
- Posit Connect / Posit Teams: Posit's enterprise products for hosting reports, notebooks, and editor environments, which fund the company's open source work.
- MCP server: A Model Context Protocol server that exposes tools, prompts, and resources to AI agents. Documenting these is on the Great Docs roadmap because their shape differs from a normal Python API.
- Skills: Reusable, installable agent capabilities (in the Claude Code sense) that Great Docs can browse and install via
great-docs skill install.
Learning Resources
If this episode inspired you to up your documentation, packaging, and AI-assisted development game, these courses are good next steps.
- Static Sites with Sphinx and Markdown: A free course on building documentation and stand-alone static sites with Sphinx using Markdown as a first-class citizen, perfect background for anyone evaluating Great Docs against the older Sphinx world.
- Modern Python Projects: Walks through the full Python project lifecycle, including project structure, dependencies, tests, documentation, CI, and deployment, which is the broader context Great Docs slots into.
- Agentic AI Programming for Python: If you want to understand the agent side of the "docs for humans and AI" story, this course shows you how to actually work with agentic, tool-using AI on real Python projects.
Overall Takeaway
Documentation has quietly become one of the most strategic surfaces of any Python project. It is read by the humans who decide whether to adopt your library, and increasingly by the AI agents that will be writing code against it on their behalf. Great Docs is a clear statement of intent: docs should be fast to spin up, opinionated and beautiful by default, executable so the examples actually work, and shipped as Markdown so an LLM can consume them as easily as a developer can. Whether or not you end up choosing Great Docs over Sphinx, MkDocs, Zensical, Mintlify, or QuartoDoc, the takeaway is the same. Treat your docs as a first-class part of your project, design them for both audiences, and lean on the small but tightly collaborating community of maintainers who are making this much easier than it used to be.
Links from the show
Michael Chow: github.com
Rich lannone: github.com
Python Web Security with OWASP Top 10 and Agentic AI Course: talkpython.fm
GT: posit-dev.github.io
Episode: talkpython.fm
Sphinx: www.sphinx-doc.org
mkdocs: www.mkdocs.org
Zensical: zensical.org
Hugo: gohugo.io
Ghost: ghost.org
Rs pkgdown: pkgdown.r-lib.org
Quarto: quarto.org
quickstart: posit-dev.github.io
llms.txt file: llmstxt.org
llms.txt: talkpython.fm
mcp: talkpython.fm
cli: talkpython.fm
Watch this episode on YouTube: youtube.com
Episode #549 deep-dive: talkpython.fm/549
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:05
00:06
00:10
00:15
00:18
00:19
00:22
00:24
00:27
00:32
00:36
00:38
00:39
00:42
01:05
01:10
01:11
01:15
01:17
01:20
01:23
01:27
01:30
01:31
01:35
01:39
01:44
01:48
01:49
01:54
01:55
01:59
02:02
02:07
02:11
02:14
02:17
02:19
02:23
02:25
02:27
02:31
02:34
02:38
02:42
02:46
02:51
02:53
02:57
03:00
03:02
03:03
03:05
03:06
03:08
03:09
03:11
03:13
03:14
03:18
03:19
03:20
03:23
03:25
03:29
03:33
03:37
03:40
03:40
03:43
03:44
03:44
03:45
03:45
03:48
03:51
03:53
03:55
03:58
03:59
04:01
04:04
04:09
04:16
04:21
04:26
04:32
04:33
04:34
04:37
04:38
04:39
04:41
04:44
04:45
04:49
04:51
04:54
05:00
05:08
05:13
05:15
05:16
05:18
05:24
05:26
05:30
05:31
05:34
05:38
05:38
05:39
05:44
05:45
05:51
05:51
05:54
05:57
05:59
06:03
06:07
06:12
06:16
06:18
06:21
06:24
06:27
06:32
06:37
06:38
06:42
06:46
06:55
06:57
07:02
07:04
07:05
07:08
07:12
07:18
07:24
07:29
07:34
07:40
07:45
07:50
07:56
08:01
08:05
08:10
08:18
08:23
08:29
08:33
08:34
08:34
08:36
08:40
08:45
08:51
08:53
08:57
09:04
09:08
09:12
09:17
09:19
09:25
09:29
09:31
09:37
09:39
09:44
09:45
09:47
09:50
09:54
09:55
09:56
09:59
09:59
10:01
10:02
10:05
10:10
10:15
10:15
10:16
10:18
10:23
10:26
10:26
10:29
10:30
10:31
10:32
10:33
10:33
10:34
10:35
10:40
10:44
10:44
10:45
10:45
10:48
10:50
10:54
10:58
11:00
11:05
11:07
11:11
11:13
11:15
11:20
11:24
11:26
11:32
11:38
11:44
11:50
11:55
11:56
12:00
12:03
12:04
12:09
12:13
12:14
12:15
12:20
12:27
12:31
12:37
12:38
12:40
12:40
12:41
12:42
12:43
12:43
12:45
12:47
12:47
12:49
12:55
12:56
13:00
13:05
13:07
13:08
13:12
13:18
13:23
13:29
13:33
13:38
13:41
13:43
13:44
13:45
13:45
13:46
13:50
13:54
13:57
14:02
14:05
14:10
14:13
14:13
14:14
14:17
14:22
14:23
14:25
14:28
14:33
14:36
14:40
14:42
14:46
14:49
14:53
14:59
15:06
15:08
15:10
15:11
15:15
15:23
15:30
15:33
15:36
15:38
15:40
15:50
15:52
15:55
15:56
15:59
16:03
16:06
16:12
16:14
16:16
16:19
16:20
16:21
16:21
16:23
16:23
16:28
16:29
16:34
16:36
16:39
16:41
16:41
16:42
16:46
16:48
16:48
16:49
16:49
16:51
16:54
16:56
16:58
17:00
17:03
17:06
17:09
17:13
17:14
17:19
17:20
17:23
17:25
17:31
17:32
17:35
17:37
17:41
17:43
17:46
17:50
17:53
17:59
18:00
18:03
18:05
18:09
18:14
18:16
18:17
18:18
18:24
18:29
18:36
18:41
18:45
18:50
18:52
18:55
18:58
19:01
19:02
19:04
19:07
19:08
19:14
19:18
19:21
19:25
19:30
19:36
19:38
19:42
19:43
19:46
19:48
19:52
19:55
20:01
20:01
20:09
20:10
20:10
20:13
20:19
20:25
20:34
20:39
20:42
20:44
20:47
20:53
20:56
20:57
21:01
21:03
21:11
21:18
21:24
21:30
21:37
21:41
21:47
21:53
21:58
22:04
22:10
22:16
22:22
22:28
22:35
22:42
22:47
22:51
22:58
23:04
23:10
23:17
23:24
23:28
23:35
23:40
23:44
23:50
23:56
24:03
24:09
24:15
24:19
24:25
24:30
24:36
24:41
24:46
24:49
24:54
25:00
25:04
25:09
25:13
25:19
25:20
25:21
25:21
25:23
25:24
25:24
25:30
25:35
25:39
25:46
25:50
25:55
25:57
26:00
26:02
26:05
26:10
26:13
26:17
26:18
26:23
26:24
26:30
26:32
26:33
26:34
26:39
26:42
26:47
26:51
26:53
26:54
26:58
26:59
27:02
27:04
27:07
27:10
27:13
27:18
27:24
27:26
27:28
27:32
27:34
27:41
27:43
27:50
27:52
27:54
27:56
27:59
28:00
28:02
28:04
28:06
28:07
28:10
28:15
28:16
28:21
28:22
28:26
28:28
28:32
28:34
28:37
28:41
28:43
28:45
28:49
28:51
28:55
28:57
29:01
29:06
29:12
29:18
29:23
29:27
29:27
29:29
29:32
29:33
29:34
29:39
29:43
29:44
29:46
29:49
29:53
29:58
29:59
30:03
30:05
30:12
30:14
30:18
30:19
30:20
30:22
30:23
30:24
30:25
30:27
30:30
30:32
30:35
30:37
30:38
30:43
30:49
30:55
31:02
31:06
31:12
31:14
31:16
31:19
31:22
31:26
31:26
31:27
31:32
31:35
31:39
31:41
31:43
31:46
31:50
31:52
31:53
31:54
31:56
32:01
32:06
32:09
32:12
32:17
32:25
32:33
32:35
32:41
32:47
32:51
32:54
32:56
33:01
33:05
33:11
33:17
33:23
33:27
33:31
33:38
33:44
33:49
33:55
34:01
34:06
34:07
34:09
34:18
34:19
34:25
34:28
34:33
34:37
34:40
34:43
34:44
34:44
34:46
34:49
34:53
34:53
34:54
34:58
34:59
35:00
35:04
35:09
35:12
35:16
35:22
35:25
35:28
35:32
35:39
35:44
35:45
35:48
35:51
35:53
35:54
35:56
35:59
36:03
36:06
36:11
36:14
36:17
36:20
36:26
36:27
36:31
36:32
36:36
36:41
36:46
36:48
36:51
36:57
37:01
37:04
37:06
37:10
37:10
37:13
37:15
37:17
37:22
37:28
37:33
37:38
37:43
37:49
37:55
38:00
38:05
38:10
38:14
38:19
38:22
38:27
38:31
38:37
38:41
38:43
38:44
38:49
38:51
38:55
38:56
38:59
39:02
39:05
39:08
39:12
39:16
39:17
39:19
39:19
39:22
39:26
39:29
39:30
39:33
39:37
39:40
39:42
39:46
39:48
39:51
39:54
39:56
40:01
40:04
40:09
40:12
40:17
40:20
40:23
40:29
40:32
40:34
40:46
40:49
40:52
40:55
40:58
41:00
41:02
41:05
41:10
41:13
41:18
41:23
41:24
41:27
41:30
41:34
41:38
41:38
41:41
41:43
41:47
41:48
41:49
41:51
41:51
41:51
41:56
41:59
42:04
42:08
42:11
42:18
42:20
42:24
42:28
42:30
42:34
42:37
42:43
42:44
42:47
42:48
42:49
42:50
42:56
43:01
43:05
43:06
43:11
43:11
43:15
43:15
43:16
43:16
43:17
43:24
43:27
43:31
43:33
43:39
43:44
43:45
43:47
43:51
43:53
43:54
43:55
43:56
43:57
43:58
43:59
44:03
44:04
44:05
44:06
44:07
44:08
44:08
44:10
44:17
44:21
44:27
44:32
44:40
44:47
44:53
44:56
45:01
45:03
45:07
45:09
45:14
45:17
45:20
45:23
45:29
45:34
45:35
45:36
45:36
45:38
45:40
45:43
45:45
45:46
45:46
45:50
45:55
45:56
45:58
45:59
45:59
46:00
46:02
46:03
46:04
46:06
46:07
46:10
46:13
46:17
46:21
46:21
46:24
46:27
46:32
46:33
46:34
46:37
46:40
46:43
46:45
46:48
46:50
46:52
46:59
47:03
47:05
47:07
47:14
47:15
47:19
47:27
47:29
47:32
47:34
47:39
47:40
47:41
47:45
47:49
47:55
47:57
48:00
48:02
48:02
48:04
48:07
48:10
48:10
48:11
48:14
48:17
48:18
48:18
48:18
48:20
48:22
48:23
48:27
48:29
48:31
48:36
48:38
48:41
48:42
48:46
48:49
48:52
48:56
49:00
49:02
49:04
49:07
49:11
49:15
49:19
49:21
49:22
49:22
49:23
49:24
49:26
49:30
49:33
49:37
49:39
49:43
49:47
49:49
49:49
49:50
49:51
49:52
49:56
49:58
49:59
50:02
50:07
50:07
50:10
50:13
50:14
50:16
50:19
50:19
50:20
50:22
50:22
50:26
50:31
50:32
50:36
50:37
50:38
50:41
50:47
50:52
50:56
51:00
51:02
51:04
51:07
51:10
51:15
51:18
51:20
51:23
51:28
51:30
51:31
51:33
51:38
51:42
51:44
51:49
51:56
51:57
52:00
52:04
52:07
52:11
52:18
52:20
52:22
52:26
52:29
52:29
52:31
52:33
52:37
52:41
52:46
52:53
53:02
53:02
53:06
53:11
53:17
53:22
53:24
53:27
53:31
53:37
53:40
53:43
53:50
53:54
53:58
54:03
54:03
54:07
54:08
54:09
54:12
54:13
54:14
54:15
54:16
54:20
54:25
54:29
54:31
54:32
54:36
54:38
54:44
54:49
54:56
55:00
55:06
55:12
55:16
55:20
55:26
55:32
55:33
55:36
55:40
55:45
55:45
55:47
55:49
55:51
55:53
55:57
55:59
56:02
56:04
56:08
56:11
56:13
56:15
56:19
56:21
56:21
56:22
56:24
56:27
56:32
56:35
56:40
56:42
56:45
56:47
56:49
56:52
56:55
56:59
57:00
57:04
57:05
57:07
57:09
57:11
57:15
57:20
57:24
57:24
57:28
57:34
57:36
57:41
57:42
57:43
57:44
57:45
57:49
57:51
57:53
57:55
57:55
58:00
58:03
58:06
58:07
58:11
58:15
58:16
58:18
58:21
58:26
58:26
58:31
58:32
58:32
58:34
58:34
58:37
58:42
58:42
58:47
58:48
58:49
58:53
58:54
58:58
59:01
59:07
59:16
59:17
59:20
59:27
59:28
59:29
59:29
59:33
59:34
59:38
59:44
59:47
59:47
59:48
59:48
59:49
59:54
59:55
59:59
01:00:04
01:00:07
01:00:07
01:00:08
01:00:08
01:00:09
01:00:11
01:00:16
01:00:17
01:00:17
01:00:18
01:00:19
01:00:26
01:00:30
01:00:35
01:00:40
01:00:45
01:00:50
01:00:55
01:00:59
01:01:06
01:01:11
01:01:18
01:01:25
01:01:31
01:01:36
01:01:39
01:01:41
01:01:43
01:01:44
01:01:48
01:01:50
01:01:52
01:01:52
01:01:56
01:01:57
01:01:58
01:02:01
01:02:04
01:02:12
01:02:16
01:02:23
01:02:23
01:02:25
01:02:29
01:02:32
01:02:36
01:02:39
01:02:40
01:02:43
01:02:44
01:02:45
01:02:47
01:02:49
01:02:51
01:02:52
01:02:54
01:02:54
01:02:57
01:02:57
01:02:59
01:03:02
01:03:03
01:03:05
01:03:09
01:03:10
01:03:12
01:03:13
01:03:15
01:03:16
01:03:17
01:03:18
01:03:19
01:03:24
01:03:28
01:03:32
01:03:36
01:03:38
01:03:39
01:03:42
01:03:44
01:03:46
01:03:48
01:03:49
01:03:50
01:03:54
01:03:58
01:03:59
01:04:00
01:04:01
01:04:02
01:04:05
01:04:06
01:04:07
01:04:12
01:04:13
01:04:16
01:04:19
01:04:20
01:04:27
01:04:30
01:04:32
01:04:34
01:04:36
01:04:38
01:04:41
01:04:45
01:04:47
01:04:49
01:04:54
01:04:58
01:05:00
01:05:03
01:05:04
01:05:07
01:05:08
01:05:08
01:05:09
01:05:10
01:05:11
01:05:12
01:05:12
01:05:13
01:05:14
01:05:17
01:05:18
01:05:19
01:05:21
01:05:24
01:05:27
01:05:30
01:05:35
01:05:39
01:05:42
01:05:47
01:05:50
01:05:53
01:06:03
01:06:05
01:06:08
01:06:11
01:06:14
01:06:16
01:06:18
01:06:19
01:06:22
01:06:25
01:06:26
01:06:28
01:06:29
01:06:48
01:06:50
01:06:55
01:06:56
01:07:27


