diff options
Diffstat (limited to 'docs')
142 files changed, 2991 insertions, 1288 deletions
diff --git a/docs/ideas.typ b/docs/ideas.typ index dfd5447a..2485e3f9 100644 --- a/docs/ideas.typ +++ b/docs/ideas.typ @@ -21,3 +21,28 @@ (`look.lookableSpan`), in a results buffer one stop per ROW (`look.lookableLineSpan`). Written up in `docs/helix-keys.md`, the `n`/`N` row of section A. + +- OPEN (2026-10-01): a `Send` builtin, acme's Send in pardes terms + - not a rename of `Repl`: `Repl lang` is a binding (where Exec on a + language's files goes), Send is an action (push this text into a + terminal now) + - from a tag, type the pane's selection (else its current line) into the + bound REPL, else the terminal in the same column, and run it + - the gap it fills: sending from a pane no REPL routes (a .txt, a scratch, + a README) without binding anything + +- OPEN (2026-10-01): an explicit pane picker for moving between panes + - the problem: SPC w h/l into a column that lands on a raw terminal leaves + the keys with its program, so Ctrl-w/SPC can't move on without Ctrl-b or + the mouse (raw terminals must keep Ctrl-w: bash deletes a word with it) + - the fix has to choose before focus lands. Options: + 1. a window mode: SPC w holds the keyboard; h/j/k/l move a highlighted + outline between panes (nothing receives keys meanwhile), Enter (or a + non-motion key) commits, Esc cancels + 2. pane labels (avy / tmux display-panes): a letter on every pane, press + one to jump there; skips raw terminals entirely + 3. landing rules: into a column, land on its last-focused non-terminal + pane, or land a terminal in normal mode; no new mode but implicit + - leaning: 1 with 2's labels shown while in the mode + - open: does Ctrl-w enter it too; does the committing key reach the pane or + only Enter commits; labels always or on a key diff --git a/docs/site/README b/docs/site/README index 76c2973f..41804163 100644 --- a/docs/site/README +++ b/docs/site/README @@ -13,6 +13,10 @@ docs/site: the pardes website, built from docs/typ ready. For a clip named N the site ships media/N.webm, media/N.mp4 and media/N.png (the poster); until `ready` is true it shows placeholder.svg instead. + casts/casts.toml the terminal recordings (asciicast v2), in order: name, + title, caption, cols, rows, ready; casts/N.cast each. + test/record_casts.py records them from a tty pardes + and writes this file. Build (from the repo root): diff --git a/docs/site/casts/casts.toml b/docs/site/casts/casts.toml index e639e7b4..9cf8afb6 100644 --- a/docs/site/casts/casts.toml +++ b/docs/site/casts/casts.toml @@ -1,20 +1,33 @@ # The landing page's terminal recordings (asciicast v2), in the order -# shown: casts/<name>.cast for each. The first plays by itself; all loop +# shown: casts/<name>.cast for each. Each plays by itself while on screen; all loop # and fit the page's width. While `ready` is false the cast shows # placeholder.svg, so the site builds before a recording exists. +# `poster_at` is the second whose frame stands for the cast before it plays. +# test/record_casts.py writes the casts and this file. [[cast]] -name = "editing" -title = "Editing in a terminal" -caption = "Recording to come." +name = "live-text" +title = "Live text" +caption = "Rename a variable with helix keys, middle-click make, right-click the error." cols = 100 rows = 30 -ready = false +ready = true +poster_at = 14 [[cast]] name = "terminals" title = "Terminals as panes" -caption = "Recording to come." +caption = "A shell beside a file: Ctrl-b, copy a line, page git log." cols = 100 rows = 30 -ready = false +ready = true +poster_at = 11 + +[[cast]] +name = "petscii" +title = "Images and PDFs in a plain terminal" +caption = "No kitty graphics: a Mandelbrot in PETSCII, then the Intel manual searched." +cols = 100 +rows = 30 +ready = true +poster_at = 3 diff --git a/docs/site/casts/live-text.cast b/docs/site/casts/live-text.cast new file mode 100644 index 00000000..66240f6b --- /dev/null +++ b/docs/site/casts/live-text.cast @@ -0,0 +1,44 @@ +{"version": 2, "width": 100, "height": 30, "title": "Live text", "env": {"TERM": "xterm-256color", "SHELL": "/bin/sh"}} +[0.0, "o", "\u001b[?25l\u001b[0m\u001b[2J\u001b[1;1H\u001b[0;38;2;178;195;184;48;2;29;40;36mNewcol Joincol Find Grep Help Changelog Tutor Dump Themes Config Debug Exit\u001b[0;39;48;2;29;40;36m \u001b[2;1H\u001b[0;38;2;255;255;255;48;2;136;116;85m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;49;71;56m \u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello/\u001b[0;38;2;223;188;229;48;2;49;71;56mmain.c\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del TreeContext\u001b[0;39;48;2;49;71;56m \u001b[4;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;97;111;100;48;2;13;20;16;1m 1 \u001b[0;38;2;201;167;237;48;2;13;20;16m#include\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0;38;2;184;216;138;48;2;13;20;16m<stdio.h>\u001b[0;39;48;2;13;20;16m \u001b[5;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 2 \u001b[0;39;48;2;13;20;16m \u001b[6;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 3 \u001b[0;38;2;201;167;237;48;2;13;20;16mstatic\u001b[0;38;2;229;238;229;48;2;13;20;16m int square(int n)\u001b[0;39;48;2;13;20;16m \u001b[7;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 4 \u001b[0;38;2;229;238;229;48;2;13;20;16m{\u001b[0;39;48;2;13;20;16m \u001b[8;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 5 \u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0;38;2;201;167;237;48;2;13;20;16mreturn\u001b[0;38;2;229;238;229;48;2;13;20;16m n * n;\u001b[0;39;48;2;13;20;16m \u001b[9;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0;38;2;229;238;229;48;2;13;20;16m}\u001b[0;39;48;2;13;20;16m \u001b[10;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 7 \u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 8 \u001b[0;38;2;229;238;229;48;2;13;20;16mint main(void)\u001b[0;39;48;2;13;20;16m \u001b[12;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 9 \u001b[0;38;2;229;238;229;48;2;13;20;16m{\u001b[0;39;48;2;13;20;16m \u001b[13;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 10 \u001b[0;38;2;229;238;229;48;2;13;20;16m int sum = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m; \u001b[0;38;2;185;244;128;48;2;13;20;16m/* 1 + 4 + 9 + 16 */\u001b[0;39;48;2;13;20;16m \u001b[14;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 11 \u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0;38;2;201;167;237;48;2;13;20;16mfor\u001b[0;38;2;229;238;229;48;2;13;20;16m (int i = \u001b[0;38;2;248;192;130;48;2;13;20;16m1\u001b[0;38;2;229;238;229;48;2;13;20;16m; i <= \u001b[0;38;2;248;192;130;48;2;13;20;16m4\u001b[0;38;2;229;238;229;48;2;13;20;16m; i++)\u001b[0;39;48;2;13;20;16m \u001b[15;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 12 \u001b[0;38;2;229;238;229;48;2;13;20;16m sum += square(i);\u001b[0;39;48;2;13;20;16m \u001b[16;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 13 \u001b[0;38;2;229;238;229;48;2;13;20;16m printf(\u001b[0;38;2;184;216;138;48;2;13;20;16m\"squares: %d\\n\"\u001b[0;38;2;229;238;229;48;2;13;20;16m, sum);\u001b[0;39;48;2;13;20;16m \u001b[17;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 14 \u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0;38;2;201;167;237;48;2;13;20;16mreturn\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m;\u001b[0;39;48;2;13;20;16m \u001b[18;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 15 \u001b[0;38;2;229;238;229;48;2;13;20;16m}\u001b[0;39;48;2;13;20;16m \u001b[19;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 16 \u001b[0;39;48;2;13;20;16m \u001b[20;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[23;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[24;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[25;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[26;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[27;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[28;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[29;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[30;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[4;8H\u001b[?25h"] +[1.6, "o", "\u001b[4;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 1 \u001b[5;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 2 \u001b[0m\u001b[5;8H\u001b[?25h"] +[1.73, "o", "\u001b[5;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 2 \u001b[6;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 3 \u001b[0m\u001b[6;8H\u001b[?25h"] +[1.86, "o", "\u001b[6;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 3 \u001b[7;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 4 \u001b[0m\u001b[7;8H\u001b[?25h"] +[1.99, "o", "\u001b[7;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 4 \u001b[8;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 5 \u001b[0m\u001b[8;8H\u001b[?25h"] +[2.12, "o", "\u001b[8;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 5 \u001b[9;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 6 \u001b[0m\u001b[9;8H\u001b[?25h"] +[2.25, "o", "\u001b[9;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[10;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 7 \u001b[0m\u001b[10;8H\u001b[?25h"] +[2.38, "o", "\u001b[10;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 7 \u001b[11;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 8 \u001b[0m\u001b[11;8H\u001b[?25h"] +[2.51, "o", "\u001b[11;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 8 \u001b[12;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 9 \u001b[0m\u001b[12;8H\u001b[?25h"] +[2.64, "o", "\u001b[12;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 9 \u001b[13;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 10 \u001b[0m\u001b[13;8H\u001b[?25h"] +[3.07, "o", "\u001b[13;8H\u001b[0;38;2;245;247;238;48;2;60;97;74m \u001b[0m\u001b[13;11H\u001b[?25h"] +[3.29, "o", "\u001b[13;8H\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0;38;2;245;247;238;48;2;60;97;74mint \u001b[0m\u001b[13;15H\u001b[?25h"] +[3.51, "o", "\u001b[13;12H\u001b[0;38;2;229;238;229;48;2;13;20;16mint\u001b[13;16H\u001b[0;38;2;245;247;238;48;2;60;97;74msum\u001b[0m\u001b[13;18H\u001b[?25h"] +[4.3, "o", "\u001b[13;15H\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0m\u001b[13;18H\u001b[?25h"] +[5.0, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m^\u001b[0;38;2;0;0;0;48;2;249;203;112;1m*\u001b[13;16H\u001b[0;38;2;229;238;229;48;2;13;20;16m = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m;\u001b[13;22H\u001b[0;38;2;185;244;128;48;2;13;20;16m/*\u001b[13;25H1 + 4 + 9 + 16\u001b[13;40H*/\u001b[13;43H\u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[13;16H\u001b[?25h"] +[5.3, "o", "\u001b[13;16H\u001b[0;38;2;229;238;229;48;2;13;20;16mt = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m; \u001b[0;38;2;185;244;128;48;2;13;20;16m/* 1 + 4 + 9 + 16 */\u001b[0m\u001b[13;17H\u001b[?25h"] +[5.39, "o", "\u001b[13;17H\u001b[0;38;2;229;238;229;48;2;13;20;16mo = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m; \u001b[0;38;2;185;244;128;48;2;13;20;16m/* 1 + 4 + 9 + 16 */\u001b[0m\u001b[13;18H\u001b[?25h"] +[5.48, "o", "\u001b[13;18H\u001b[0;38;2;229;238;229;48;2;13;20;16mt = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m; \u001b[0;38;2;185;244;128;48;2;13;20;16m/* 1 + 4 + 9 + 16 */\u001b[0m\u001b[13;19H\u001b[?25h"] +[5.57, "o", "\u001b[13;19H\u001b[0;38;2;229;238;229;48;2;13;20;16ma = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m; \u001b[0;38;2;185;244;128;48;2;13;20;16m/* 1 + 4 + 9 + 16 */\u001b[0m\u001b[13;20H\u001b[?25h"] +[5.66, "o", "\u001b[13;20H\u001b[0;38;2;229;238;229;48;2;13;20;16ml = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m; \u001b[0;38;2;185;244;128;48;2;13;20;16m/* 1 + 4 + 9 + 16 */\u001b[0m\u001b[13;21H\u001b[?25h"] +[5.96, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0m\u001b[13;21H\u001b[?25h"] +[6.56, "o", "\u001b[4;96H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mSPC\u001b[0;39;48;2;29;40;36m \u001b[0m\u001b[13;21H\u001b[?25h"] +[6.78, "o", "\u001b[4;94H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mSPC f\u001b[0m\u001b[13;21H\u001b[?25h"] +[7.0, "o", "\u001b[3;2H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[4;61H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m--:--:-- saved /tmp/cast/hello/main.c\u001b[0m\u001b[13;21H\u001b[?25h"] +[8.1, "o", "\u001b[4;61H\u001b[0;39;48;2;13;20;16m \u001b[13;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 10 \u001b[0m\u001b[3;60H\u001b[?25h"] +[8.4, "o", "\u001b[0m\u001b[3;61H\u001b[?25h"] +[8.49, "o", "\u001b[3;61H\u001b[0;38;2;190;207;196;48;2;49;71;56mm\u001b[0m\u001b[3;62H\u001b[?25h"] +[8.58, "o", "\u001b[3;62H\u001b[0;38;2;190;207;196;48;2;49;71;56ma\u001b[0m\u001b[3;63H\u001b[?25h"] +[8.67, "o", "\u001b[3;63H\u001b[0;38;2;190;207;196;48;2;49;71;56mk\u001b[0m\u001b[3;64H\u001b[?25h"] +[8.76, "o", "\u001b[3;64H\u001b[0;38;2;190;207;196;48;2;49;71;56me\u001b[0m\u001b[3;65H\u001b[?25h"] +[9.46, "o", "\u001b[3;61H\u001b[0;38;2;245;247;238;48;2;91;126;90mmake \u001b[0m\u001b[3;65H\u001b[?25h"] +[10.26, "o", "\u001b[3;61H\u001b[0;38;2;190;207;196;48;2;49;71;56mmake\u001b[0;39;48;2;49;71;56m \u001b[4;95H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mExec\u001b[0;39;48;2;29;40;36m \u001b[14;1H\u001b[0;39;48;2;21;32;25m \u001b[15;1H \u001b[16;1H \u001b[17;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello (make) exit 2 Kill Save Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[18;3H\u001b[0;38;2;229;238;229;48;2;13;20;16m%\u001b[18;5Hmake\u001b[19;3Hmain.c:\u001b[19;11HIn\u001b[19;14Hfunction\u001b[19;23H‘main’:\u001b[20;3Hmain.c:12:9:\u001b[20;16Herror:\u001b[20;23H‘sum’\u001b[20;29Hundeclared\u001b[20;40H(first\u001b[20;47Huse\u001b[20;51Hin\u001b[20;54Hthis\u001b[20;59Hfunction)\u001b[21;3Hmain.c:12:9:\u001b[21;16Hnote:\u001b[21;22Heach\u001b[21;27Hundeclared\u001b[21;38Hidentifier\u001b[21;49His\u001b[21;52Hreported\u001b[21;61Honly\u001b[21;66Honce\u001b[21;71Hfor\u001b[21;75Heach\u001b[21;80Hfunction\u001b[21;89Hit\u001b[21;92Happears\u001b[21;100Hi\u001b[22;3Hn\u001b[23;3Hmain.c:10:9:\u001b[23;16Hwarning:\u001b[23;25Hunused\u001b[23;32Hvariable\u001b[23;41H‘total’\u001b[24;3Hmake:\u001b[24;9H***\u001b[24;13H[Makefile:4:\u001b[24;26Hhello]\u001b[24;33HError\u001b[24;39H1\u001b[25;3Hexit\u001b[25;8H2\u001b[0m\u001b[3;65H\u001b[?25h"] +[12.26, "o", "\u001b[3;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello/\u001b[0;38;2;211;176;217;48;2;29;40;36mmain.c\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del TreeContext make\u001b[0;39;48;2;29;40;36m \u001b[4;95H\u001b[0;39;48;2;13;20;16m \u001b[17;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello (make) exit 2 Kill Save Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[20;3H\u001b[0;38;2;245;247;238;48;2;107;120;88mmain.c:12:9:\u001b[0m\u001b[26;3H\u001b[?25h"] +[13.06, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello/\u001b[0;38;2;223;188;229;48;2;49;71;56mmain.c\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del TreeContext make\u001b[0;39;48;2;49;71;56m \u001b[4;1H\u001b[0;39;48;2;21;32;25m \u001b[4;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m6\u001b[4;8H\u001b[0;38;2;229;238;229;48;2;13;20;16m}\u001b[0;39;48;2;13;20;16m \u001b[4;17H \u001b[5;1H\u001b[0;39;48;2;21;32;25m \u001b[5;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m7\u001b[6;1H\u001b[0;39;48;2;21;32;25m \u001b[6;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m8\u001b[6;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mint main(void)\u001b[0;39;48;2;13;20;16m \u001b[6;30H \u001b[7;1H\u001b[0;39;48;2;21;32;25m \u001b[7;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m9\u001b[8;5H10\u001b[8;12H\u001b[0;38;2;229;238;229;48;2;13;20;16mint total = \u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m;\u001b[8;27H\u001b[0;38;2;185;244;128;48;2;13;20;16m/*\u001b[8;30H1\u001b[8;32H+\u001b[8;34H4\u001b[8;36H+\u001b[8;38H9\u001b[8;40H+\u001b[8;42H16\u001b[8;45H*/\u001b[9;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m11\u001b[9;8H\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[9;12H\u001b[0;38;2;201;167;237;48;2;13;20;16mfor\u001b[9;16H\u001b[0;38;2;229;238;229;48;2;13;20;16m(int\u001b[9;21Hi\u001b[9;23H=\u001b[9;25H\u001b[0;38;2;248;192;130;48;2;13;20;16m1\u001b[0;38;2;229;238;229;48;2;13;20;16m;\u001b[9;28Hi\u001b[9;30H<=\u001b[9;33H\u001b[0;38;2;248;192;130;48;2;13;20;16m4\u001b[0;38;2;229;238;229;48;2;13;20;16m;\u001b[9;36Hi++)\u001b[10;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 12 \u001b[10;16H\u001b[0;38;2;229;238;229;48;2;13;20;16msum\u001b[10;20H+=\u001b[10;23Hsquare(i);\u001b[11;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m13\u001b[11;8H\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[11;12Hpr\u001b[11;16Htf(\u001b[0;38;2;184;216;138;48;2;13;20;16m\"squares:\u001b[11;29H%d\\n\"\u001b[0;38;2;229;238;229;48;2;13;20;16m,\u001b[11;36Hsum);\u001b[12;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m14\u001b[12;8H\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[12;12H\u001b[0;38;2;201;167;237;48;2;13;20;16mreturn\u001b[12;19H\u001b[0;38;2;248;192;130;48;2;13;20;16m0\u001b[0;38;2;229;238;229;48;2;13;20;16m;\u001b[13;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m5\u001b[13;8H\u001b[0;38;2;229;238;229;48;2;13;20;16m}\u001b[13;12H\u001b[0;39;48;2;13;20;16m \u001b[13;16H \u001b[13;22H \u001b[13;24H \u001b[13;27H \u001b[13;30H \u001b[13;32H \u001b[13;34H \u001b[13;36H \u001b[13;38H \u001b[13;40H \u001b[13;42H \u001b[13;45H \u001b[14;1H\u001b[0;39;48;2;96;130;105m \u001b[14;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m6\u001b[14;12H\u001b[0;39;48;2;13;20;16m \u001b[14;16H \u001b[14;21H \u001b[14;23H \u001b[14;25H \u001b[14;28H \u001b[14;30H \u001b[14;33H \u001b[14;36H \u001b[15;1H\u001b[0;39;48;2;96;130;105m \u001b[15;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[15;16H\u001b[0;39;48;2;13;20;16m \u001b[15;20H \u001b[15;23H \u001b[16;1H\u001b[0;39;48;2;96;130;105m \u001b[16;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[16;12H\u001b[0;39;48;2;13;20;16m \u001b[16;29H \u001b[16;36H \u001b[17;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello (make) exit 2 Kill Save Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[20;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mmain.c:12:9:\u001b[0m\u001b[10;16H\u001b[?25h"] +[15.06, "o", "\u001b[10;16H\u001b[0;38;2;245;247;238;48;2;60;97;74msum\u001b[0m\u001b[10;18H\u001b[?25h"] +[15.66, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m^\u001b[0;38;2;0;0;0;48;2;249;203;112;1m*\u001b[10;16H\u001b[0;38;2;229;238;229;48;2;13;20;16m +=\u001b[10;20Hsquare(i);\u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[10;16H\u001b[?25h"] +[15.96, "o", "\u001b[10;16H\u001b[0;38;2;229;238;229;48;2;13;20;16mt += square(i);\u001b[0m\u001b[10;17H\u001b[?25h"] +[16.05, "o", "\u001b[10;17H\u001b[0;38;2;229;238;229;48;2;13;20;16mo += square(i);\u001b[0m\u001b[10;18H\u001b[?25h"] +[16.14, "o", "\u001b[10;18H\u001b[0;38;2;229;238;229;48;2;13;20;16mt += square(i);\u001b[0m\u001b[10;19H\u001b[?25h"] +[16.23, "o", "\u001b[10;19H\u001b[0;38;2;229;238;229;48;2;13;20;16ma += square(i);\u001b[0m\u001b[10;20H\u001b[?25h"] +[16.32, "o", "\u001b[10;20H\u001b[0;38;2;229;238;229;48;2;13;20;16ml += square(i);\u001b[0m\u001b[10;21H\u001b[?25h"] +[16.62, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0m\u001b[10;21H\u001b[?25h"] +[18.62, "o", ""] diff --git a/docs/site/casts/petscii.cast b/docs/site/casts/petscii.cast new file mode 100644 index 00000000..466dd3c7 --- /dev/null +++ b/docs/site/casts/petscii.cast @@ -0,0 +1,39 @@ +{"version": 2, "width": 100, "height": 30, "title": "Images and PDFs in a plain terminal", "env": {"TERM": "xterm-256color", "SHELL": "/bin/sh"}} +[0.0, "o", "\u001b[?25l\u001b[0m\u001b[2J\u001b[1;1H\u001b[0;38;2;178;195;184;48;2;29;40;36mNewcol Joincol Find Grep Help Changelog Tutor Dump Themes Config Debug Exit\u001b[0;39;48;2;29;40;36m \u001b[2;1H\u001b[0;38;2;255;255;255;48;2;136;116;85m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;49;71;56m \u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/art/\u001b[0;38;2;223;188;229;48;2;49;71;56mREADME\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[4;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;97;111;100;48;2;13;20;16;1m 1 \u001b[0;38;2;229;238;229;48;2;13;20;16mpictures, right-click a name:\u001b[0;39;48;2;13;20;16m \u001b[5;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 2 \u001b[0;39;48;2;13;20;16m \u001b[6;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 3 \u001b[0;38;2;229;238;229;48;2;13;20;16m mandelbrot.png the whole set\u001b[0;39;48;2;13;20;16m \u001b[7;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 4 \u001b[0;38;2;229;238;229;48;2;13;20;16m seahorse.png a seahorse valley, zoomed in\u001b[0;39;48;2;13;20;16m \u001b[8;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 5 \u001b[0;38;2;229;238;229;48;2;13;20;16m sdm.pdf Intel SDM vol. 2, 2,515 pages\u001b[0;39;48;2;13;20;16m \u001b[9;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0;39;48;2;13;20;16m \u001b[10;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[12;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[13;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[14;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[15;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[16;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[17;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[18;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[19;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[20;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[23;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[24;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[25;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[26;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[27;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[28;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[29;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[30;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[4;8H\u001b[?25h"] +[1.6, "o", "\u001b[6;10H\u001b[0;38;2;245;247;238;48;2;107;120;88mmandelbrot.png \u001b[0m\u001b[4;8H\u001b[?25h"] +[2.1, "o", "\u001b[3;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/art/\u001b[0;38;2;211;176;217;48;2;29;40;36mREADME\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[4;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 1 \u001b[6;10H\u001b[0;38;2;229;238;229;48;2;13;20;16mmandelbrot.png \u001b[8;1H\u001b[0;39;48;2;21;32;25m \u001b[9;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mimg petscii:off palette:commodore ascii:on /tmp/cast/art/\u001b[0;38;2;223;188;229;48;2;49;71;56mmandelbrot.png\u001b[0;38;2;190;207;196;48;2;49;71;56m Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[10;1H\u001b[0;39;48;2;21;32;25m \u001b[10;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝🬎\u001b[0;38;2;112;164;178;48;2;108;94;181m🬹🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▙🬒🬬🬎█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█🬱\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[11;1H\u001b[0;39;48;2;21;32;25m \u001b[11;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝▀~\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬝🬝\u001b[0;38;2;255;255;255;48;2;112;164;178m🬜\u001b[0;38;2;255;255;255;48;2;0;0;0m🬬\u001b[0;38;2;112;164;178;48;2;255;255;255m▜█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;112;164;178m🬊█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[12;1H\u001b[0;39;48;2;21;32;25m \u001b[12;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝▀\u001b[0;38;2;112;164;178;48;2;108;94;181m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬺\u001b[0;38;2;255;255;255;48;2;184;199;111m🬴\u001b[0;38;2;0;0;0;48;2;184;199;111m▄🬻🬺▖\u001b[0;38;2;255;255;255;48;2;184;199;111m▜\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬺\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[13;1H\u001b[0;39;48;2;21;32;25m \u001b[13;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█🬆\u001b[0;38;2;112;164;178;48;2;108;94;181m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬬🬎🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬝\u001b[0;38;2;255;255;255;48;2;112;164;178m__\u001b[0;38;2;255;255;255;48;2;184;199;111m🬲\u001b[0;38;2;0;0;0;48;2;184;199;111m🬬\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;184;199;111m🬕\u001b[0;38;2;184;199;111;48;2;255;255;255m^\u001b[0;38;2;255;255;255;48;2;112;164;178m_\u001b[0;38;2;112;164;178;48;2;255;255;255m█🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬺\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[14;1H\u001b[0;39;48;2;21;32;25m \u001b[14;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝\u001b[0;38;2;112;164;178;48;2;108;94;181m▄█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;255;255;255;48;2;112;164;178m🬫\u001b[0;38;2;184;199;111;48;2;0;0;0m▛\u001b[0;38;2;0;0;0;48;2;112;164;178m▄_🬭\u001b[0;38;2;0;0;0;48;2;184;199;111m🬹\u001b[0;38;2;0;0;0;48;2;111;79;37m🬹\u001b[0;38;2;0;0;0;48;2;104;55;43m🬹\u001b[0;38;2;111;79;37;48;2;0;0;0m~\u001b[0;38;2;0;0;0;48;2;67;57;0m█\u001b[0;38;2;0;0;0;48;2;111;79;37m█\u001b[0;38;2;0;0;0;48;2;104;55;43m🬹\u001b[0;38;2;0;0;0;48;2;108;108;108m🬹\u001b[0;38;2;0;0;0;48;2;184;199;111m🬹🬹\u001b[0;38;2;184;199;111;48;2;0;0;0m🬎\u001b[0;38;2;112;164;178;48;2;255;255;255m🬝\u001b[0;38;2;112;164;178;48;2;0;0;0m🬝\u001b[0;38;2;0;0;0;48;2;112;164;178m_\u001b[0;38;2;255;255;255;48;2;184;199;111m🬬\u001b[0;38;2;112;164;178;48;2;255;255;255m▜\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬺\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[15;1H\u001b[0;39;48;2;21;32;25m \u001b[15;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝\u001b[0;38;2;112;164;178;48;2;108;94;181m▟\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬝\u001b[0;38;2;112;164;178;48;2;184;199;111m🬎\u001b[0;38;2;255;255;255;48;2;112;164;178mj\u001b[0;38;2;0;0;0;48;2;184;199;111m🬯\u001b[0;38;2;0;0;0;48;2;67;57;0m🬸\u001b[0;38;2;104;55;43;48;2;0;0;0m`\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;184;199;111m🬺\u001b[0;38;2;0;0;0;48;2;67;57;0m🬝\u001b[0;38;2;0;0;0;48;2;255;255;255m🬎\u001b[0;38;2;112;164;178;48;2;255;255;255m▟█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬲\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[16;1H\u001b[0;39;48;2;21;32;25m \u001b[16;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝\u001b[0;38;2;112;164;178;48;2;108;94;181m▟\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▛\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▌\u001b[0;38;2;184;199;111;48;2;154;103;89m▌\u001b[0;38;2;184;199;111;48;2;0;0;0m~\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;184;199;111m🬺\u001b[0;38;2;112;164;178;48;2;184;199;111m🬊🬬\u001b[0;38;2;112;164;178;48;2;255;255;255m▜\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[17;1H\u001b[0;39;48;2;21;32;25m \u001b[17;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;112;164;178;48;2;108;94;181m🬵\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▙\u001b[0;38;2;255;255;255;48;2;112;164;178m🬩\u001b[0;38;2;255;255;255;48;2;0;0;0m🬝\u001b[0;38;2;112;164;178;48;2;255;255;255m🬒\u001b[0;38;2;255;255;255;48;2;112;164;178m▟\u001b[0;38;2;184;199;111;48;2;0;0;0m🬝\u001b[0;38;2;112;164;178;48;2;255;255;255m▀🬙🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬝\u001b[0;38;2;0;0;0;48;2;154;103;89m🬞\u001b[0;38;2;67;57;0;48;2;0;0;0m`\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;154;103;89m▛\u001b[0;38;2;184;199;111;48;2;0;0;0m▟\u001b[0;38;2;112;164;178;48;2;255;255;255m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m▌\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[18;1H\u001b[0;39;48;2;21;32;25m \u001b[18;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝\u001b[0;38;2;112;164;178;48;2;108;94;181m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▀\u001b[0;38;2;0;0;0;48;2;255;255;255m_\u001b[0;38;2;0;0;0;48;2;184;199;111m🬷\u001b[0;38;2;0;0;0;48;2;154;103;89m🬺\u001b[0;38;2;104;55;43;48;2;0;0;0m~\u001b[0;38;2;0;0;0;48;2;111;79;37m█\u001b[0;38;2;104;55;43;48;2;0;0;0m~\u001b[0;38;2;0;0;0;48;2;184;199;111m🬺🬹\u001b[0;38;2;0;0;0;48;2;112;164;178m🬏\u001b[0;38;2;255;255;255;48;2;184;199;111m▌\u001b[0;38;2;0;0;0;48;2;111;79;37m🬻\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;154;103;89m▛\u001b[0;38;2;255;255;255;48;2;112;164;178m🬑\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬲\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[19;1H\u001b[0;39;48;2;21;32;25m \u001b[19;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;112;164;178;48;2;108;94;181m▟\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▌🬡\u001b[0;38;2;111;79;37;48;2;255;255;255m_\u001b[0;38;2;255;255;255;48;2;184;199;111m🬆\u001b[0;38;2;0;0;0;48;2;111;79;37m🬻\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;67;57;0;48;2;0;0;0m╱\u001b[0;38;2;184;199;111;48;2;0;0;0mT\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;112;164;178m🬆\u001b[0;38;2;112;164;178;48;2;184;199;111m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[20;1H\u001b[0;39;48;2;21;32;25m \u001b[20;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m██\u001b[0;38;2;112;164;178;48;2;154;103;89m🬴\u001b[0;38;2;112;164;178;48;2;255;255;255m🬸█🬰\u001b[0;38;2;255;255;255;48;2;112;164;178m─\u001b[0;38;2;112;164;178;48;2;255;255;255m🬰\u001b[0;38;2;255;255;255;48;2;112;164;178m🬛\u001b[0;38;2;255;255;255;48;2;184;199;111m🬴\u001b[0;38;2;0;0;0;48;2;184;199;111m🬫\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;104;55;43m🬛\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;104;55;43m🬴\u001b[0;38;2;0;0;0;48;2;112;164;178m🬐\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[21;1H\u001b[0;39;48;2;21;32;25m \u001b[21;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;112;164;178;48;2;108;94;181m🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▌\u001b[0;38;2;255;255;255;48;2;112;164;178m🬌\u001b[0;38;2;0;0;0;48;2;112;164;178m~\u001b[0;38;2;255;255;255;48;2;184;199;111m🬱\u001b[0;38;2;0;0;0;48;2;111;79;37m🬬\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;111;79;37m█\u001b[0;38;2;255;255;255;48;2;67;57;0m,\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;184;199;111m█\u001b[0;38;2;0;0;0;48;2;112;164;178m▖\u001b[0;38;2;112;164;178;48;2;184;199;111m🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[22;1H\u001b[0;39;48;2;21;32;25m \u001b[22;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬺\u001b[0;38;2;112;164;178;48;2;108;94;181m🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▄\u001b[0;38;2;255;255;255;48;2;67;57;0m🬹\u001b[0;38;2;0;0;0;48;2;184;199;111m🬨\u001b[0;38;2;0;0;0;48;2;104;55;43m🬝\u001b[0;38;2;0;0;0;48;2;184;199;111m█\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;111;79;37m█🬝\u001b[0;38;2;0;0;0;48;2;154;103;89m🬆\u001b[0;38;2;255;255;255;48;2;111;79;37m🬹\u001b[0;38;2;255;255;255;48;2;184;199;111m▌\u001b[0;38;2;0;0;0;48;2;67;57;0m▜\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;111;79;37m🬛\u001b[0;38;2;255;255;255;48;2;112;164;178m▚\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬕\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[23;1H\u001b[0;39;48;2;21;32;25m \u001b[23;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬺\u001b[0;38;2;112;164;178;48;2;108;94;181m🬊\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m▛\u001b[0;38;2;255;255;255;48;2;112;164;178m🬍\u001b[0;38;2;255;255;255;48;2;0;0;0m🬺\u001b[0;38;2;112;164;178;48;2;255;255;255m🬮\u001b[0;38;2;184;199;111;48;2;255;255;255m'\u001b[0;38;2;0;0;0;48;2;184;199;111m🬁\u001b[0;38;2;112;164;178;48;2;184;199;111m▄\u001b[0;38;2;112;164;178;48;2;255;255;255m🬶🬹█🬺\u001b[0;38;2;0;0;0;48;2;184;199;111m▝\u001b[0;38;2;0;0;0;48;2;67;57;0m█\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;154;103;89m🬲\u001b[0;38;2;112;164;178;48;2;0;0;0m🬬\u001b[0;38;2;112;164;178;48;2;255;255;255m🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m▌\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[24;1H\u001b[0;39;48;2;21;32;25m \u001b[24;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬺\u001b[0;38;2;112;164;178;48;2;108;94;181m🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬲\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;184;199;111m🬚\u001b[0;38;2;0;0;0;48;2;184;199;111m🬠\u001b[0;38;2;0;0;0;48;2;111;79;37m🬝\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;184;199;111m🬝\u001b[0;38;2;184;199;111;48;2;112;164;178mf\u001b[0;38;2;112;164;178;48;2;184;199;111m🬹\u001b[0;38;2;112;164;178;48;2;255;255;255m▟\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬻\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[25;1H\u001b[0;39;48;2;21;32;25m \u001b[25;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█🬺\u001b[0;38;2;112;164;178;48;2;108;94;181m🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬺\u001b[0;38;2;112;164;178;48;2;184;199;111m🬹\u001b[0;38;2;255;255;255;48;2;112;164;178m4\u001b[0;38;2;0;0;0;48;2;184;199;111m🬡\u001b[0;38;2;0;0;0;48;2;67;57;0m🬸\u001b[0;38;2;0;0;0;48;2;104;55;43m█\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;0;0;0;48;2;184;199;111m🬝\u001b[0;38;2;0;0;0;48;2;67;57;0m█\u001b[0;38;2;184;199;111;48;2;104;55;43m🬂\u001b[0;38;2;112;164;178;48;2;255;255;255m🬨\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬕\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[26;1H\u001b[0;39;48;2;21;32;25m \u001b[26;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬺\u001b[0;38;2;112;164;178;48;2;108;94;181m🬊█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬐\u001b[0;38;2;184;199;111;48;2;0;0;0m▙\u001b[0;38;2;0;0;0;48;2;184;199;111m▀\u001b[0;38;2;255;255;255;48;2;184;199;111m▄\u001b[0;38;2;0;0;0;48;2;184;199;111m🬂🬎🬎\u001b[0;38;2;149;149;149;48;2;0;0;0m_\u001b[0;38;2;154;103;89;48;2;0;0;0m_\u001b[0;38;2;0;0;0;48;2;67;57;0m█\u001b[0;38;2;67;57;0;48;2;0;0;0m_\u001b[0;38;2;108;108;108;48;2;0;0;0m__\u001b[0;38;2;0;0;0;48;2;184;199;111m🬎🬎🬂\u001b[0;38;2;112;164;178;48;2;255;255;255m🬺\u001b[0;38;2;112;164;178;48;2;111;79;37m🬹\u001b[0;38;2;0;0;0;48;2;112;164;178m~\u001b[0;38;2;255;255;255;48;2;184;199;111m🬻\u001b[0;38;2;112;164;178;48;2;255;255;255m▟\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬝\u001b[0;38;2;108;94;181;48;2;112;164;178m🬻\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[27;1H\u001b[0;39;48;2;21;32;25m \u001b[27;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬺\u001b[0;38;2;112;164;178;48;2;108;94;181m🬊🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬹🬹🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬺\u001b[0;38;2;255;255;255;48;2;112;164;178m~\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;255;255;255;48;2;184;199;111m▛\u001b[0;38;2;0;0;0;48;2;184;199;111m🬻\u001b[0;38;2;0;0;0;48;2;0;0;0m \u001b[0;38;2;255;255;255;48;2;104;55;43m🬁\u001b[0;38;2;255;255;255;48;2;184;199;111m🬬\u001b[0;38;2;184;199;111;48;2;112;164;178m~\u001b[0;38;2;255;255;255;48;2;112;164;178m~\u001b[0;38;2;112;164;178;48;2;255;255;255m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;255;255;255;48;2;112;164;178m'\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;112;164;178m🬻\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[28;1H\u001b[0;39;48;2;21;32;25m \u001b[28;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█🬹\u001b[0;38;2;112;164;178;48;2;108;94;181m▀🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬝\u001b[0;38;2;255;255;255;48;2;184;199;111m🬴\u001b[0;38;2;0;0;0;48;2;184;199;111m▀🬬🬝▀\u001b[0;38;2;255;255;255;48;2;184;199;111m🬸\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m🬝\u001b[0;38;2;108;94;181;48;2;112;164;178m🬻\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[29;1H\u001b[0;39;48;2;21;32;25m \u001b[29;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m█🬹\u001b[0;38;2;112;164;178;48;2;108;94;181m▀🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬺▙\u001b[0;38;2;255;255;255;48;2;0;0;0m🬺\u001b[0;38;2;184;199;111;48;2;0;0;0m🬻\u001b[0;38;2;112;164;178;48;2;255;255;255m▟█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█🬆\u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[30;1H\u001b[0;39;48;2;21;32;25m \u001b[30;20H\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;112;164;178;48;2;108;94;181m\"\u001b[0;38;2;108;94;181;48;2;112;164;178m🬹\u001b[0;38;2;112;164;178;48;2;108;94;181m🬎🬬\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m🬝🬣\u001b[0;38;2;255;255;255;48;2;112;164;178m~\u001b[0;38;2;112;164;178;48;2;255;255;255m🬹█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█🬆\u001b[0;38;2;108;94;181;48;2;112;164;178m🬻\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0m\u001b[4;8H\u001b[?25h"] +[4.1, "o", "\u001b[9;89H\u001b[0;38;2;245;247;238;48;2;91;126;90mDel \u001b[0m\u001b[4;8H\u001b[?25h"] +[4.5, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/art/\u001b[0;38;2;223;188;229;48;2;49;71;56mREADME\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[6;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 3 \u001b[8;1H\u001b[0;39;48;2;96;130;105m \u001b[9;1H \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0;39;48;2;13;20;16m \u001b[10;1H\u001b[0;39;48;2;96;130;105m \u001b[10;20H\u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[11;20H\u001b[0;39;48;2;13;20;16m \u001b[12;1H\u001b[0;39;48;2;96;130;105m \u001b[12;20H\u001b[0;39;48;2;13;20;16m \u001b[13;1H\u001b[0;39;48;2;96;130;105m \u001b[13;20H\u001b[0;39;48;2;13;20;16m \u001b[14;1H\u001b[0;39;48;2;96;130;105m \u001b[14;20H\u001b[0;39;48;2;13;20;16m \u001b[15;1H\u001b[0;39;48;2;96;130;105m \u001b[15;20H\u001b[0;39;48;2;13;20;16m \u001b[16;1H\u001b[0;39;48;2;96;130;105m \u001b[16;20H\u001b[0;39;48;2;13;20;16m \u001b[17;1H\u001b[0;39;48;2;96;130;105m \u001b[17;20H\u001b[0;39;48;2;13;20;16m \u001b[18;1H\u001b[0;39;48;2;96;130;105m \u001b[18;20H\u001b[0;39;48;2;13;20;16m \u001b[19;1H\u001b[0;39;48;2;96;130;105m \u001b[19;20H\u001b[0;39;48;2;13;20;16m \u001b[20;1H\u001b[0;39;48;2;96;130;105m \u001b[20;20H\u001b[0;39;48;2;13;20;16m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[21;20H\u001b[0;39;48;2;13;20;16m \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[22;20H\u001b[0;39;48;2;13;20;16m \u001b[23;1H\u001b[0;39;48;2;96;130;105m \u001b[23;20H\u001b[0;39;48;2;13;20;16m \u001b[24;1H\u001b[0;39;48;2;96;130;105m \u001b[24;20H\u001b[0;39;48;2;13;20;16m \u001b[25;1H\u001b[0;39;48;2;96;130;105m \u001b[25;20H\u001b[0;39;48;2;13;20;16m \u001b[26;1H\u001b[0;39;48;2;96;130;105m \u001b[26;20H\u001b[0;39;48;2;13;20;16m \u001b[27;1H\u001b[0;39;48;2;96;130;105m \u001b[27;20H\u001b[0;39;48;2;13;20;16m \u001b[28;1H\u001b[0;39;48;2;96;130;105m \u001b[28;20H\u001b[0;39;48;2;13;20;16m \u001b[29;1H\u001b[0;39;48;2;96;130;105m \u001b[29;20H\u001b[0;39;48;2;13;20;16m \u001b[30;1H\u001b[0;39;48;2;96;130;105m \u001b[30;20H\u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[6;10H\u001b[?25h"] +[5.0, "o", "\u001b[7;10H\u001b[0;38;2;245;247;238;48;2;107;120;88mseahorse.png \u001b[0m\u001b[6;10H\u001b[?25h"] +[5.5, "o", "\u001b[3;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/art/\u001b[0;38;2;211;176;217;48;2;29;40;36mREADME\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[6;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 3 \u001b[7;10H\u001b[0;38;2;229;238;229;48;2;13;20;16mseahorse.png \u001b[8;1H\u001b[0;39;48;2;21;32;25m \u001b[9;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mimg petscii:off palette:commodore ascii:on /tmp/cast/art/\u001b[0;38;2;223;188;229;48;2;49;71;56mseahorse.png\u001b[0;38;2;190;207;196;48;2;49;71;56m Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[10;1H\u001b[0;39;48;2;21;32;25m \u001b[10;20H\u001b[0;38;2;112;164;178;48;2;108;94;181m🬝\u001b[0;38;2;184;199;111;48;2;112;164;178mq_\u001b[0;38;2;112;164;178;48;2;184;199;111m🬎\u001b[0;38;2;112;164;178;48;2;154;103;89m🬫🬱\u001b[0;38;2;154;103;89;48;2;53;40;121m🬴\u001b[0;38;2;149;149;149;48;2;108;94;181mY\u001b[0;38;2;112;164;178;48;2;154;103;89m\\\u001b[0;38;2;184;199;111;48;2;112;164;178m▖\u001b[0;38;2;108;94;181;48;2;112;164;178m🬺🬹\u001b[0;38;2;108;94;181;48;2;184;199;111m🬻\u001b[0;38;2;53;40;121;48;2;112;164;178m🬵\u001b[0;38;2;108;94;181;48;2;149;149;149m🬹\u001b[0;38;2;108;94;181;48;2;184;199;111m🬻\u001b[0;38;2;112;164;178;48;2;149;149;149m🬃\u001b[0;38;2;184;199;111;48;2;112;164;178m─\u001b[0;38;2;108;94;181;48;2;112;164;178m▟\u001b[0;38;2;53;40;121;48;2;108;94;181m🬻\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m█🬹▄\u001b[0;38;2;108;94;181;48;2;53;40;121m~\u001b[0;38;2;53;40;121;48;2;108;94;181m█\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m█🬹🬹\u001b[0;38;2;108;94;181;48;2;53;40;121m▀🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[11;1H\u001b[0;39;48;2;21;32;25m \u001b[11;20H\u001b[0;38;2;108;94;181;48;2;149;149;149m▐\u001b[0;38;2;53;40;121;48;2;108;94;181m🬹🬹🬱\u001b[0;38;2;53;40;121;48;2;112;164;178m🬶▄\u001b[0;38;2;53;40;121;48;2;184;199;111m🬹\u001b[0;38;2;112;164;178;48;2;149;149;149m🬜\u001b[0;38;2;184;199;111;48;2;149;149;149m─\"\u001b[0;38;2;53;40;121;48;2;108;94;181m▟\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m█▄🬻\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬺\u001b[0;38;2;108;94;181;48;2;53;40;121m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[12;1H\u001b[0;39;48;2;21;32;25m \u001b[12;20H\u001b[0;38;2;53;40;121;48;2;112;164;178m🬦\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;112;164;178;48;2;53;40;121m~\u001b[0;38;2;53;40;121;48;2;108;94;181m▄█\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;108;94;181;48;2;53;40;121m🬨\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[13;1H\u001b[0;39;48;2;21;32;25m \u001b[13;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m▌\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[14;1H\u001b[0;39;48;2;21;32;25m \u001b[14;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬄\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[15;1H\u001b[0;39;48;2;21;32;25m \u001b[15;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬝▘\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[16;1H\u001b[0;39;48;2;21;32;25m \u001b[16;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m█🬎\u001b[0;38;2;108;94;181;48;2;53;40;121m🬹█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[17;1H\u001b[0;39;48;2;21;32;25m \u001b[17;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬝\u001b[0;38;2;108;94;181;48;2;53;40;121m🬹\u001b[0;38;2;108;94;181;48;2;184;199;111m🬎\u001b[0;38;2;108;94;181;48;2;53;40;121m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;53;40;121m█\u001b[0;38;2;108;94;181;48;2;149;149;149m🬬\u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[18;1H\u001b[0;39;48;2;21;32;25m \u001b[18;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;112;164;178m🬆\u001b[0;38;2;184;199;111;48;2;108;94;181m▄\u001b[0;38;2;108;94;181;48;2;112;164;178m▜\u001b[0;38;2;112;164;178;48;2;108;94;181m_\u001b[0;38;2;108;94;181;48;2;154;103;89m🬝\u001b[0;38;2;149;149;149;48;2;108;94;181m_\u001b[0;38;2;112;164;178;48;2;108;94;181m🬳\u001b[0;38;2;154;103;89;48;2;112;164;178m🬶\u001b[0;38;2;108;94;181;48;2;184;199;111m🬴▀\u001b[0;38;2;108;94;181;48;2;255;255;255m🬝\u001b[0;38;2;108;94;181;48;2;112;164;178m🬆\u001b[0;38;2;184;199;111;48;2;108;94;181mc\u001b[0;38;2;53;40;121;48;2;149;149;149m_\u001b[0;38;2;108;94;181;48;2;149;149;149m🬫\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0;38;2;108;94;181;48;2;112;164;178m🬝🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[19;1H\u001b[0;39;48;2;21;32;25m \u001b[19;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬎\u001b[0;38;2;149;149;149;48;2;53;40;121m_\u001b[0;38;2;53;40;121;48;2;108;94;181m🬎\u001b[0;38;2;108;94;181;48;2;53;40;121m_\u001b[0;38;2;53;40;121;48;2;108;94;181m▀\u001b[0;38;2;108;94;181;48;2;112;164;178m🬝\u001b[0;38;2;108;94;181;48;2;149;149;149m🬄\u001b[0;38;2;112;164;178;48;2;154;103;89m🬤\u001b[0;38;2;112;164;178;48;2;108;94;181m│\u001b[0;38;2;184;199;111;48;2;154;103;89m~\u001b[0;38;2;154;103;89;48;2;184;199;111ma\u001b[0;38;2;255;255;255;48;2;112;164;178mq\u001b[0;38;2;112;164;178;48;2;154;103;89m🬄\u001b[0;38;2;154;103;89;48;2;112;164;178m🬹\u001b[0;38;2;53;40;121;48;2;154;103;89m🬈\u001b[0;38;2;184;199;111;48;2;154;103;89m▄\u001b[0;38;2;255;255;255;48;2;149;149;149m<\u001b[0;38;2;112;164;178;48;2;184;199;111mT\u001b[0;38;2;108;94;181;48;2;154;103;89m}\u001b[0;38;2;149;149;149;48;2;108;94;181mt\u001b[0;38;2;154;103;89;48;2;149;149;149md\u001b[0;38;2;255;255;255;48;2;184;199;111m▗\u001b[0;38;2;112;164;178;48;2;255;255;255m▜\u001b[0;38;2;108;94;181;48;2;154;103;89m🬕\u001b[0;38;2;53;40;121;48;2;149;149;149m🬏\u001b[0;38;2;112;164;178;48;2;184;199;111m🬴\u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[20;1H\u001b[0;39;48;2;21;32;25m \u001b[20;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;108;94;181;48;2;112;164;178m▌\u001b[0;38;2;112;164;178;48;2;154;103;89m▝\u001b[0;38;2;108;94;181;48;2;149;149;149m🬑\u001b[0;38;2;184;199;111;48;2;108;94;181m─\u001b[0;38;2;184;199;111;48;2;149;149;149m=\u001b[0;38;2;112;164;178;48;2;184;199;111m🬜\u001b[0;38;2;255;255;255;48;2;112;164;178m.\u001b[0;38;2;255;255;255;48;2;149;149;149m_\u001b[0;38;2;184;199;111;48;2;154;103;89m🬭\u001b[0;38;2;149;149;149;48;2;154;103;89m~\u001b[0;38;2;184;199;111;48;2;149;149;149m🬊\u001b[0;38;2;255;255;255;48;2;184;199;111m🬞\u001b[0;38;2;154;103;89;48;2;184;199;111mz\u001b[0;38;2;184;199;111;48;2;149;149;149m▀\u001b[0;38;2;108;94;181;48;2;154;103;89m🬹\u001b[0;38;2;184;199;111;48;2;108;94;181m🬊\u001b[0;38;2;255;255;255;48;2;149;149;149m🬢\u001b[0;38;2;184;199;111;48;2;149;149;149m▀\u001b[0;38;2;112;164;178;48;2;154;103;89m▗\u001b[0;38;2;184;199;111;48;2;108;94;181m🬉\u001b[0;38;2;184;199;111;48;2;149;149;149m🬴🬪\u001b[0;38;2;184;199;111;48;2;154;103;89m🬐\u001b[0;38;2;184;199;111;48;2;108;94;181m▝\u001b[0;38;2;53;40;121;48;2;108;94;181mL\u001b[0;38;2;112;164;178;48;2;154;103;89m🬁\u001b[0;38;2;112;164;178;48;2;149;149;149m▜\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[21;1H\u001b[0;39;48;2;21;32;25m \u001b[21;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m█\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;149;149;149m🬎▀\u001b[0;38;2;108;94;181;48;2;112;164;178m▀\u001b[0;38;2;112;164;178;48;2;154;103;89m🬱\u001b[0;38;2;108;94;181;48;2;154;103;89m─\u001b[0;38;2;154;103;89;48;2;112;164;178m▟\u001b[0;38;2;53;40;121;48;2;154;103;89m-\u001b[0;38;2;154;103;89;48;2;184;199;111m_─\u001b[0;38;2;255;255;255;48;2;149;149;149m🬭\u001b[0;38;2;184;199;111;48;2;255;255;255m🬎\u001b[0;38;2;111;79;37;48;2;112;164;178m▀\u001b[0;38;2;149;149;149;48;2;53;40;121m🬺\u001b[0;38;2;255;255;255;48;2;149;149;149m🬞\u001b[0;38;2;255;255;255;48;2;255;255;255m \u001b[0;38;2;184;199;111;48;2;255;255;255m'\u001b[0;38;2;255;255;255;48;2;184;199;111m🬺\u001b[0;38;2;255;255;255;48;2;149;149;149m🬵\u001b[0;38;2;255;255;255;48;2;68;68;68m█\u001b[0;38;2;255;255;255;48;2;154;103;89m█\u001b[0;38;2;255;255;255;48;2;149;149;149m🬱\u001b[0;38;2;255;255;255;48;2;112;164;178m🬭\u001b[0;38;2;255;255;255;48;2;184;199;111m🬺\u001b[0;38;2;255;255;255;48;2;154;103;89m🬏\u001b[0;38;2;112;164;178;48;2;154;103;89mx\u001b[0;38;2;184;199;111;48;2;154;103;89m▗🬛\u001b[0;38;2;53;40;121;48;2;184;199;111m🬄\u001b[0;38;2;255;255;255;48;2;184;199;111mm\u001b[0;38;2;112;164;178;48;2;108;94;181m🬎\u001b[0;38;2;112;164;178;48;2;154;103;89m▀\u001b[0;38;2;108;94;181;48;2;149;149;149m🬂\u001b[0;38;2;108;94;181;48;2;112;164;178m🬨\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[22;1H\u001b[0;39;48;2;21;32;25m \u001b[22;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m▌\u001b[0;38;2;53;40;121;48;2;112;164;178m^\u001b[0;38;2;112;164;178;48;2;149;149;149m🬍\u001b[0;38;2;108;94;181;48;2;154;103;89m🬝\u001b[0;38;2;184;199;111;48;2;108;94;181m🬋\u001b[0;38;2;184;199;111;48;2;112;164;178m▄\u001b[0;38;2;184;199;111;48;2;149;149;149m🬐\u001b[0;38;2;112;164;178;48;2;154;103;89m🬎\u001b[0;38;2;255;255;255;48;2;112;164;178m.\u001b[0;38;2;149;149;149;48;2;184;199;111m/\u001b[0;38;2;154;103;89;48;2;184;199;111m~\u001b[0;38;2;184;199;111;48;2;154;103;89m▌\u001b[0;38;2;53;40;121;48;2;154;103;89m)\u001b[0;38;2;184;199;111;48;2;149;149;149m🬞\u001b[0;38;2;149;149;149;48;2;108;94;181m🬸\u001b[0;38;2;255;255;255;48;2;112;164;178m▀~~~\u001b[0;38;2;112;164;178;48;2;255;255;255m██🬹\u001b[0;38;2;255;255;255;48;2;112;164;178m🬬\u001b[0;38;2;255;255;255;48;2;255;255;255m \u001b[0;38;2;255;255;255;48;2;112;164;178m▙▄\u001b[0;38;2;255;255;255;48;2;184;199;111m🬓\u001b[0;38;2;184;199;111;48;2;154;103;89m🬇🬄\u001b[0;38;2;149;149;149;48;2;104;55;43m🬍\u001b[0;38;2;53;40;121;48;2;184;199;111m🬯\u001b[0;38;2;154;103;89;48;2;0;0;0m🬻\u001b[0;38;2;255;255;255;48;2;112;164;178m`\u001b[0;38;2;112;164;178;48;2;108;94;181m🬕\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[23;1H\u001b[0;39;48;2;21;32;25m \u001b[23;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬺\u001b[0;38;2;184;199;111;48;2;108;94;181m🬊\u001b[0;38;2;112;164;178;48;2;154;103;89m▐\u001b[0;38;2;112;164;178;48;2;53;40;121m🬴\u001b[0;38;2;108;94;181;48;2;149;149;149m🬷\u001b[0;38;2;154;103;89;48;2;108;94;181m🬨\u001b[0;38;2;108;94;181;48;2;154;103;89m.\u001b[0;38;2;184;199;111;48;2;255;255;255m█🬎\u001b[0;38;2;255;255;255;48;2;154;103;89m▄\u001b[0;38;2;255;255;255;48;2;184;199;111m▄\u001b[0;38;2;112;164;178;48;2;184;199;111m🬻\u001b[0;38;2;184;199;111;48;2;112;164;178m~\u001b[0;38;2;112;164;178;48;2;255;255;255m🬻\u001b[0;38;2;154;103;89;48;2;112;164;178m~\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;255;255;255;48;2;112;164;178m🬷\u001b[0;38;2;255;255;255;48;2;255;255;255m \u001b[0;38;2;255;255;255;48;2;149;149;149m▛\u001b[0;38;2;112;164;178;48;2;154;103;89m╲\u001b[0;38;2;154;103;89;48;2;149;149;149m🬉\u001b[0;38;2;184;199;111;48;2;154;103;89ma\u001b[0;38;2;154;103;89;48;2;255;255;255m🬝\u001b[0;38;2;255;255;255;48;2;149;149;149m🬭\u001b[0;38;2;112;164;178;48;2;184;199;111m▐\u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;112;164;178m🬬\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[24;1H\u001b[0;39;48;2;21;32;25m \u001b[24;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬝\u001b[0;38;2;53;40;121;48;2;112;164;178m🬎\u001b[0;38;2;53;40;121;48;2;149;149;149m🬆\u001b[0;38;2;112;164;178;48;2;108;94;181m▄🬺\u001b[0;38;2;104;55;43;48;2;112;164;178m^\u001b[0;38;2;154;103;89;48;2;104;55;43m🬺\u001b[0;38;2;184;199;111;48;2;154;103;89m🬭🬳\u001b[0;38;2;154;103;89;48;2;184;199;111m🬺\u001b[0;38;2;108;94;181;48;2;149;149;149m🬓\u001b[0;38;2;104;55;43;48;2;108;108;108m🬃\u001b[0;38;2;154;103;89;48;2;149;149;149m🬓\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;255;255;255;48;2;112;164;178mm\u001b[0;38;2;112;164;178;48;2;108;108;108m🬎\u001b[0;38;2;255;255;255;48;2;149;149;149m~\u001b[0;38;2;184;199;111;48;2;154;103;89m🬰\u001b[0;38;2;255;255;255;48;2;154;103;89m🬂▜\u001b[0;38;2;255;255;255;48;2;255;255;255m \u001b[0;38;2;184;199;111;48;2;255;255;255m~\u001b[0;38;2;154;103;89;48;2;184;199;111m🬻\u001b[0;38;2;184;199;111;48;2;154;103;89m🬋\u001b[0;38;2;53;40;121;48;2;149;149;149m🬞\u001b[0;38;2;255;255;255;48;2;112;164;178m🬂\u001b[0;38;2;112;164;178;48;2;154;103;89m▀▀\u001b[0;38;2;112;164;178;48;2;108;94;181m🬺\u001b[0;38;2;108;94;181;48;2;112;164;178m▜\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[25;1H\u001b[0;39;48;2;21;32;25m \u001b[25;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;111;61;134m█\u001b[0;38;2;111;61;134;48;2;53;40;121m_\u001b[0;38;2;53;40;121;48;2;149;149;149m🬆\u001b[0;38;2;53;40;121;48;2;184;199;111m🬎\u001b[0;38;2;53;40;121;48;2;108;94;181m🬬▛\u001b[0;38;2;53;40;121;48;2;112;164;178m▘\u001b[0;38;2;184;199;111;48;2;112;164;178m_\u001b[0;38;2;184;199;111;48;2;149;149;149m_\u001b[0;38;2;108;108;108;48;2;112;164;178m_\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;149;149;149m▙\u001b[0;38;2;184;199;111;48;2;154;103;89m▟\u001b[0;38;2;184;199;111;48;2;255;255;255m🬻\u001b[0;38;2;154;103;89;48;2;184;199;111m_\u001b[0;38;2;154;103;89;48;2;149;149;149m▛\u001b[0;38;2;112;164;178;48;2;154;103;89m🬷\u001b[0;38;2;112;164;178;48;2;149;149;149m🬹\u001b[0;38;2;104;55;43;48;2;112;164;178m`\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;149;149;149m🬆\u001b[0;38;2;108;94;181;48;2;154;103;89m🬒\u001b[0;38;2;154;103;89;48;2;184;199;111m▛\u001b[0;38;2;184;199;111;48;2;112;164;178m█▛\u001b[0;38;2;184;199;111;48;2;154;103;89m🬀\u001b[0;38;2;184;199;111;48;2;108;108;108m▐\u001b[0;38;2;255;255;255;48;2;184;199;111m█\u001b[0;38;2;255;255;255;48;2;255;255;255m \u001b[0;38;2;184;199;111;48;2;154;103;89m🬰🬭🬭\u001b[0;38;2;108;94;181;48;2;154;103;89m🬉\u001b[0;38;2;112;164;178;48;2;104;55;43m┼\u001b[0;38;2;154;103;89;48;2;0;0;0m🬻\u001b[0;38;2;112;164;178;48;2;184;199;111m🬲\u001b[0;38;2;112;164;178;48;2;149;149;149m🬵\u001b[0;38;2;108;94;181;48;2;112;164;178m~\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[26;1H\u001b[0;39;48;2;21;32;25m \u001b[26;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;112;164;178m▙\u001b[0;38;2;112;164;178;48;2;108;94;181m▐\u001b[0;38;2;112;164;178;48;2;149;149;149m▖\u001b[0;38;2;112;164;178;48;2;154;103;89m🬎\u001b[0;38;2;108;94;181;48;2;149;149;149m🬑\u001b[0;38;2;108;108;108;48;2;112;164;178m*\u001b[0;38;2;184;199;111;48;2;108;94;181m🬂\u001b[0;38;2;154;103;89;48;2;184;199;111m🬺\u001b[0;38;2;184;199;111;48;2;154;103;89m▀🬭🬹🬝🬓\u001b[0;38;2;255;255;255;48;2;149;149;149m🬭\u001b[0;38;2;112;164;178;48;2;184;199;111m▟\u001b[0;38;2;255;255;255;48;2;112;164;178m/\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;149;149;149m▌\u001b[0;38;2;154;103;89;48;2;108;94;181m🬝\u001b[0;38;2;184;199;111;48;2;154;103;89m▝█\u001b[0;38;2;184;199;111;48;2;255;255;255m🬕\u001b[0;38;2;255;255;255;48;2;184;199;111m🬹█\u001b[0;38;2;255;255;255;48;2;255;255;255m \u001b[0;38;2;255;255;255;48;2;184;199;111m▛\u001b[0;38;2;255;255;255;48;2;149;149;149m▀\u001b[0;38;2;255;255;255;48;2;108;108;108m🬀\u001b[0;38;2;184;199;111;48;2;154;103;89m╲\u001b[0;38;2;154;103;89;48;2;108;108;108m▟\u001b[0;38;2;255;255;255;48;2;154;103;89m▄\u001b[0;38;2;184;199;111;48;2;154;103;89m🬓\u001b[0;38;2;112;164;178;48;2;184;199;111m🬻\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m▌\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[27;1H\u001b[0;39;48;2;21;32;25m \u001b[27;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;111;61;134m█\u001b[0;38;2;53;40;121;48;2;112;164;178m▖\u001b[0;38;2;184;199;111;48;2;112;164;178m▐\u001b[0;38;2;154;103;89;48;2;108;94;181m🬕\u001b[0;38;2;184;199;111;48;2;108;94;181m[\u001b[0;38;2;53;40;121;48;2;184;199;111m🬄\u001b[0;38;2;112;164;178;48;2;108;94;181m▌\u001b[0;38;2;53;40;121;48;2;108;94;181m🬈\u001b[0;38;2;154;103;89;48;2;108;94;181m🬴▟\u001b[0;38;2;184;199;111;48;2;255;255;255m█\u001b[0;38;2;255;255;255;48;2;184;199;111m─\u001b[0;38;2;255;255;255;48;2;149;149;149m▀\u001b[0;38;2;255;255;255;48;2;112;164;178m🬂\u001b[0;38;2;184;199;111;48;2;112;164;178m🬋\u001b[0;38;2;112;164;178;48;2;184;199;111m▜\u001b[0;38;2;112;164;178;48;2;53;40;121m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;67;57;0m█\u001b[0;38;2;112;164;178;48;2;154;103;89m🬹\u001b[0;38;2;184;199;111;48;2;154;103;89m┼\u001b[0;38;2;154;103;89;48;2;111;61;134m🬎\u001b[0;38;2;184;199;111;48;2;154;103;89m🬂🬬\u001b[0;38;2;255;255;255;48;2;149;149;149m▀\u001b[0;38;2;255;255;255;48;2;184;199;111m🬎🬆\u001b[0;38;2;255;255;255;48;2;108;94;181m▀\u001b[0;38;2;154;103;89;48;2;184;199;111m▄\u001b[0;38;2;184;199;111;48;2;154;103;89m-\u001b[0;38;2;154;103;89;48;2;149;149;149m🬻\u001b[0;38;2;53;40;121;48;2;108;94;181mq\u001b[0;38;2;112;164;178;48;2;108;108;108m▖\u001b[0;38;2;0;0;0;48;2;108;108;108m🬏\u001b[0;38;2;112;164;178;48;2;149;149;149m▀\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m▌\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[28;1H\u001b[0;39;48;2;21;32;25m \u001b[28;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m🬛\u001b[0;38;2;108;94;181;48;2;184;199;111m▙\u001b[0;38;2;108;94;181;48;2;149;149;149m🬯\u001b[0;38;2;184;199;111;48;2;108;94;181m▄\u001b[0;38;2;108;94;181;48;2;154;103;89mY\u001b[0;38;2;53;40;121;48;2;154;103;89m`\u001b[0;38;2;184;199;111;48;2;154;103;89m_🬹\u001b[0;38;2;154;103;89;48;2;53;40;121m🬝🬥\u001b[0;38;2;108;94;181;48;2;149;149;149m🬲\u001b[0;38;2;53;40;121;48;2;108;94;181m+\u001b[0;38;2;112;164;178;48;2;184;199;111m▛\u001b[0;38;2;154;103;89;48;2;149;149;149m▌\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;108;108;108;48;2;112;164;178m.\u001b[0;38;2;154;103;89;48;2;112;164;178m>\u001b[0;38;2;184;199;111;48;2;154;103;89m🬚\u001b[0;38;2;154;103;89;48;2;108;108;108m🬙\u001b[0;38;2;104;55;43;48;2;108;94;181m▘\u001b[0;38;2;154;103;89;48;2;149;149;149m🬝\u001b[0;38;2;154;103;89;48;2;184;199;111m🬬\u001b[0;38;2;108;94;181;48;2;154;103;89m\"\u001b[0;38;2;154;103;89;48;2;108;94;181m🬆\u001b[0;38;2;154;103;89;48;2;184;199;111mP\u001b[0;38;2;255;255;255;48;2;184;199;111m🬃\u001b[0;38;2;154;103;89;48;2;108;94;181m🬎\u001b[0;38;2;184;199;111;48;2;112;164;178m─\u001b[0;38;2;112;164;178;48;2;184;199;111m🬴\u001b[0;38;2;184;199;111;48;2;112;164;178m+\u001b[0;38;2;149;149;149;48;2;112;164;178m-\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m▙\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[29;1H\u001b[0;39;48;2;21;32;25m \u001b[29;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;108;94;181m█\u001b[0;38;2;112;164;178;48;2;53;40;121m_\u001b[0;38;2;53;40;121;48;2;112;164;178m🬆\u001b[0;38;2;53;40;121;48;2;149;149;149m~\u001b[0;38;2;112;164;178;48;2;149;149;149m🬹▄\u001b[0;38;2;108;94;181;48;2;112;164;178m^\u001b[0;38;2;112;164;178;48;2;154;210;132m█\u001b[0;38;2;255;255;255;48;2;149;149;149m~\u001b[0;38;2;184;199;111;48;2;154;103;89m▐\u001b[0;38;2;255;255;255;48;2;184;199;111m🬆\u001b[0;38;2;184;199;111;48;2;255;255;255m█\u001b[0;38;2;184;199;111;48;2;149;149;149m🬺\u001b[0;38;2;154;103;89;48;2;111;79;37m🬝\u001b[0;38;2;184;199;111;48;2;154;103;89m▄\u001b[0;38;2;112;164;178;48;2;184;199;111m▟\u001b[0;38;2;112;164;178;48;2;255;255;255m██\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;53;40;121m█\u001b[0;38;2;112;164;178;48;2;184;199;111m🬔\u001b[0;38;2;53;40;121;48;2;112;164;178m+\u001b[0;38;2;112;164;178;48;2;255;255;255m▙\u001b[0;38;2;112;164;178;48;2;154;103;89m🬮🬯\u001b[0;38;2;112;164;178;48;2;108;108;108m▙\u001b[0;38;2;149;149;149;48;2;154;103;89m╱\u001b[0;38;2;112;164;178;48;2;255;255;255m█\u001b[0;38;2;112;164;178;48;2;0;0;0m█\u001b[0;38;2;112;164;178;48;2;154;103;89m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;108;94;181m█\u001b[0;38;2;108;94;181;48;2;112;164;178m█\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[30;1H\u001b[0;39;48;2;21;32;25m \u001b[30;20H\u001b[0;38;2;53;40;121;48;2;53;40;121m \u001b[0;38;2;53;40;121;48;2;112;164;178m█\u001b[0;38;2;112;164;178;48;2;108;94;181m🬨\u001b[0;38;2;112;164;178;48;2;149;149;149m🬭\u001b[0;38;2;184;199;111;48;2;149;149;149mt\u001b[0;38;2;112;164;178;48;2;184;199;111m██🬬\u001b[0;38;2;112;164;178;48;2;154;210;132m█\u001b[0;38;2;112;164;178;48;2;184;199;111m█\u001b[0;38;2;255;255;255;48;2;112;164;178m]\u001b[0;38;2;184;199;111;48;2;154;103;89m🬒🬆\u001b[0;38;2;154;103;89;48;2;184;199;111m🬻🬙\u001b[0;38;2;112;164;178;48;2;149;149;149m▄\u001b[0;38;2;112;164;178;48;2;184;199;111m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;149;149;149m█\u001b[0;38;2;112;164;178;48;2;104;55;43m█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;112;164;178;48;2;149;149;149m🬺🬺█\u001b[0;38;2;112;164;178;48;2;112;164;178m \u001b[0;38;2;108;94;181;48;2;112;164;178m▐\u001b[0;38;2;108;94;181;48;2;108;94;181m \u001b[0m\u001b[6;10H\u001b[?25h"] +[7.5, "o", "\u001b[9;87H\u001b[0;38;2;245;247;238;48;2;91;126;90mDel \u001b[0m\u001b[6;10H\u001b[?25h"] +[7.9, "o", "\u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/art/\u001b[0;38;2;223;188;229;48;2;49;71;56mREADME\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[7;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 4 \u001b[8;1H\u001b[0;39;48;2;96;130;105m \u001b[9;1H \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0;39;48;2;13;20;16m \u001b[10;1H\u001b[0;39;48;2;96;130;105m \u001b[10;20H\u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[11;20H\u001b[0;39;48;2;13;20;16m \u001b[12;1H\u001b[0;39;48;2;96;130;105m \u001b[12;20H\u001b[0;39;48;2;13;20;16m \u001b[13;1H\u001b[0;39;48;2;96;130;105m \u001b[13;20H\u001b[0;39;48;2;13;20;16m \u001b[14;1H\u001b[0;39;48;2;96;130;105m \u001b[14;20H\u001b[0;39;48;2;13;20;16m \u001b[15;1H\u001b[0;39;48;2;96;130;105m \u001b[15;20H\u001b[0;39;48;2;13;20;16m \u001b[16;1H\u001b[0;39;48;2;96;130;105m \u001b[16;20H\u001b[0;39;48;2;13;20;16m \u001b[17;1H\u001b[0;39;48;2;96;130;105m \u001b[17;20H\u001b[0;39;48;2;13;20;16m \u001b[18;1H\u001b[0;39;48;2;96;130;105m \u001b[18;20H\u001b[0;39;48;2;13;20;16m \u001b[19;1H\u001b[0;39;48;2;96;130;105m \u001b[19;20H\u001b[0;39;48;2;13;20;16m \u001b[20;1H\u001b[0;39;48;2;96;130;105m \u001b[20;20H\u001b[0;39;48;2;13;20;16m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[21;20H\u001b[0;39;48;2;13;20;16m \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[22;20H\u001b[0;39;48;2;13;20;16m \u001b[23;1H\u001b[0;39;48;2;96;130;105m \u001b[23;20H\u001b[0;39;48;2;13;20;16m \u001b[24;1H\u001b[0;39;48;2;96;130;105m \u001b[24;20H\u001b[0;39;48;2;13;20;16m \u001b[25;1H\u001b[0;39;48;2;96;130;105m \u001b[25;20H\u001b[0;39;48;2;13;20;16m \u001b[26;1H\u001b[0;39;48;2;96;130;105m \u001b[26;20H\u001b[0;39;48;2;13;20;16m \u001b[27;1H\u001b[0;39;48;2;96;130;105m \u001b[27;20H\u001b[0;39;48;2;13;20;16m \u001b[28;1H\u001b[0;39;48;2;96;130;105m \u001b[28;20H\u001b[0;39;48;2;13;20;16m \u001b[29;1H\u001b[0;39;48;2;96;130;105m \u001b[29;20H\u001b[0;39;48;2;13;20;16m \u001b[30;1H\u001b[0;39;48;2;96;130;105m \u001b[30;20H\u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[7;10H\u001b[?25h"] +[8.4, "o", "\u001b[8;10H\u001b[0;38;2;245;247;238;48;2;107;120;88msdm.pdf \u001b[0m\u001b[7;10H\u001b[?25h"] +[8.9, "o", "\u001b[3;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/art/\u001b[0;38;2;211;176;217;48;2;29;40;36mREADME\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[7;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 4 \u001b[8;1H\u001b[0;39;48;2;21;32;25m \u001b[8;10H\u001b[0;38;2;229;238;229;48;2;13;20;16msdm.pdf \u001b[9;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/home/goblin/01-resources/\u001b[0;38;2;223;188;229;48;2;49;71;56mintel-devref-ii.pdf\u001b[0;38;2;190;207;196;48;2;49;71;56m [1/2515] Tty PdfSections PdfTint Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[10;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mIntel®\u001b[10;10H64\u001b[10;13Hand\u001b[10;17HIA-32\u001b[10;23HArchitectures\u001b[11;1H\u001b[0;39;48;2;21;32;25m \u001b[11;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mSoftware\u001b[11;12HDeveloper’s\u001b[11;24HManual\u001b[12;1H\u001b[0;39;48;2;21;32;25m \u001b[12;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mVolume\u001b[12;10H2\u001b[12;12H(2A,\u001b[12;17H2B,\u001b[12;21H2C,\u001b[12;25H&\u001b[12;27H2D):\u001b[13;1H\u001b[0;39;48;2;21;32;25m \u001b[13;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mInstruction\u001b[13;15HSet\u001b[13;19HReference,\u001b[13;30HA-Z\u001b[14;1H\u001b[0;39;48;2;21;32;25m \u001b[14;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mNOTE:\u001b[14;9HThe\u001b[14;13HIntel\u001b[14;19H64\u001b[14;22Hand\u001b[14;26HIA-32\u001b[14;32HArchitectures\u001b[14;46HSoftware\u001b[14;55HDeveloper's\u001b[14;67HManual\u001b[14;74Hconsists\u001b[14;83Hof\u001b[14;86Hfour\u001b[14;91Hvolumes:\u001b[15;1H\u001b[0;39;48;2;21;32;25m \u001b[15;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mBasic\u001b[15;9HArchitecture,\u001b[15;23HOrder\u001b[15;29HNumber\u001b[15;36H253665;\u001b[15;44HInstruction\u001b[15;56HSet\u001b[15;60HReference,\u001b[15;71HA-Z,\u001b[15;76HOrder\u001b[15;82HNumber\u001b[15;89H325383;\u001b[16;1H\u001b[0;39;48;2;21;32;25m \u001b[16;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mSystem\u001b[16;10HProgramming\u001b[16;22HGuide,\u001b[16;29HOrder\u001b[16;35HNumber\u001b[16;42H325384;\u001b[16;50HModel-Specific\u001b[16;65HRegisters,\u001b[16;76HOrder\u001b[16;82HNumber\u001b[17;1H\u001b[0;39;48;2;21;32;25m \u001b[17;3H\u001b[0;38;2;229;238;229;48;2;13;20;16m335592.\u001b[17;11HRefer\u001b[17;17Hto\u001b[17;20Hall\u001b[17;24Hfour\u001b[17;29Hvolumes\u001b[17;37Hwhen\u001b[17;42Hevaluating\u001b[17;53Hyour\u001b[17;58Hdesign\u001b[17;65Hneeds.\u001b[18;1H\u001b[0;39;48;2;21;32;25m \u001b[18;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mOrder\u001b[18;9HNumber:\u001b[18;18H325383-084US\u001b[19;1H\u001b[0;39;48;2;21;32;25m \u001b[19;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mJune\u001b[19;8H2024\u001b[20;1H\u001b[0;39;48;2;21;32;25m \u001b[21;1H \u001b[22;1H \u001b[23;1H \u001b[24;1H \u001b[25;1H \u001b[26;1H \u001b[27;1H \u001b[28;1H \u001b[29;1H \u001b[30;1H \u001b[0m\u001b[10;3H\u001b[?25h"] +[10.4, "o", "\u001b[9;63H\u001b[0;38;2;245;247;238;48;2;91;126;90mPdfSections \u001b[0m\u001b[10;3H\u001b[?25h"] +[10.9, "o", "\u001b[9;63H\u001b[0;38;2;190;207;196;48;2;49;71;56mPdfSections \u001b[10;88H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mPdfSections\u001b[0;39;48;2;29;40;36m \u001b[19;3H\u001b[0;39;48;2;13;20;16m \u001b[19;8H \u001b[20;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/home/goblin/01-resources/\u001b[0;38;2;211;176;217;48;2;29;40;36m+PdfSections\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del LocationsConfig\u001b[0;39;48;2;29;40;36m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[21;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m1\u001b[21;8Hintel-devref-ii.pdf:29:1\u001b[21;33H\u001b[0;38;2;229;238;229;48;2;13;20;16mChapter\u001b[21;41H1\u001b[21;43HAbout\u001b[21;49HThis\u001b[21;54HManual\u001b[22;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m2\u001b[22;8Hintel-devref-ii.pdf:29:2\u001b[22;35H\u001b[0;38;2;229;238;229;48;2;13;20;16m1.1\u001b[22;39HOverview\u001b[22;48Hof\u001b[22;51HVolume\u001b[22;58H2A,\u001b[22;62H2B,\u001b[22;66H2C,\u001b[22;70Hand\u001b[22;74H2D:\u001b[22;78HInstruction\u001b[22;90HSet\u001b[22;94HRefere\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[23;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mnce\u001b[24;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m3\u001b[24;8Hintel-devref-ii.pdf:31:3\u001b[24;33H\u001b[0;38;2;229;238;229;48;2;13;20;16mChapter\u001b[24;41H2\u001b[24;43HInstruction\u001b[24;55HFormat\u001b[25;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m4\u001b[25;8Hintel-devref-ii.pdf:31:4\u001b[25;35H\u001b[0;38;2;229;238;229;48;2;13;20;16m2.1\u001b[25;39HInstruction\u001b[25;51HFormat\u001b[25;58Hfor\u001b[25;62HProtected\u001b[25;72HMode,\u001b[25;78Hreal-address\u001b[25;91HMode,\u001b[25;97Hand\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[26;9H\u001b[0;38;2;229;238;229;48;2;13;20;16mvirtual-8086\u001b[26;22Hmode\u001b[27;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m5\u001b[27;8Hintel-devref-ii.pdf:31:5\u001b[27;37H\u001b[0;38;2;229;238;229;48;2;13;20;16m2.1.1\u001b[27;43HInstruction\u001b[27;55HPrefixes\u001b[28;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m6\u001b[28;8Hintel-devref-ii.pdf:33:6\u001b[28;37H\u001b[0;38;2;229;238;229;48;2;13;20;16m2.1.2\u001b[28;43HOpcodes\u001b[29;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m7\u001b[29;8Hintel-devref-ii.pdf:33:7\u001b[29;37H\u001b[0;38;2;229;238;229;48;2;13;20;16m2.1.3\u001b[29;43HModR/M\u001b[29;50Hand\u001b[29;54HSIB\u001b[29;58HBytes\u001b[30;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m8\u001b[30;8Hintel-devref-ii.pdf:33:8\u001b[30;37H\u001b[0;38;2;229;238;229;48;2;13;20;16m2.1.4\u001b[30;43HDisplacement\u001b[30;56Hand\u001b[30;60HImmediate\u001b[30;70HBytes\u001b[0m\u001b[10;3H\u001b[?25h"] +[12.2, "o", "\u001b[9;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/home/goblin/01-resources/\u001b[0;38;2;211;176;217;48;2;29;40;36mintel-devref-ii.pdf\u001b[0;38;2;178;195;184;48;2;29;40;36m [1/2515] Tty PdfSections PdfTint Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[10;88H\u001b[0;39;48;2;13;20;16m \u001b[20;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/home/goblin/01-resources/\u001b[0;38;2;223;188;229;48;2;49;71;56m+PdfSections\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del LocationsConfig\u001b[0;39;48;2;49;71;56m \u001b[0m\u001b[20;80H\u001b[?25h"] +[12.5, "o", "\u001b[0m\u001b[20;81H\u001b[?25h"] +[12.59, "o", "\u001b[20;81H\u001b[0;38;2;190;207;196;48;2;49;71;56mC\u001b[0m\u001b[20;82H\u001b[?25h"] +[12.68, "o", "\u001b[20;82H\u001b[0;38;2;190;207;196;48;2;49;71;56mP\u001b[0m\u001b[20;83H\u001b[?25h"] +[12.77, "o", "\u001b[20;83H\u001b[0;38;2;190;207;196;48;2;49;71;56mU\u001b[0m\u001b[20;84H\u001b[?25h"] +[12.86, "o", "\u001b[20;84H\u001b[0;38;2;190;207;196;48;2;49;71;56mI\u001b[0m\u001b[20;85H\u001b[?25h"] +[12.95, "o", "\u001b[20;85H\u001b[0;38;2;190;207;196;48;2;49;71;56mD\u001b[0m\u001b[20;86H\u001b[?25h"] +[13.65, "o", "\u001b[20;81H\u001b[0;38;2;245;247;238;48;2;107;120;88mCPUID \u001b[0m\u001b[20;86H\u001b[?25h"] +[14.05, "o", "\u001b[20;81H\u001b[0;38;2;190;207;196;48;2;49;71;56mCPUID\u001b[0;39;48;2;49;71;56m \u001b[21;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m95\u001b[21;28H103:95\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[21;41H3.1.1.2\u001b[21;49HOpcode Column\u001b[21;63Hin\u001b[21;66Hthe\u001b[21;70HInstruction\u001b[21;82HSummary\u001b[21;90HTable\u001b[21;96H(Ins\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[22;6H \u001b[22;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mtructions with VEX prefix)\u001b[22;35H\u001b[0;39;48;2;13;20;16m \u001b[22;39H \u001b[22;48H \u001b[22;51H \u001b[22;58H \u001b[22;62H \u001b[22;66H \u001b[22;70H \u001b[22;74H \u001b[22;78H \u001b[22;90H \u001b[22;94H \u001b[23;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m96\u001b[23;8Hintel-devref-ii.pdf:105:96\u001b[23;41H\u001b[0;38;2;229;238;229;48;2;13;20;16m3.1.1.3\u001b[23;49HInstruction\u001b[23;61HColumn\u001b[23;68Hin\u001b[23;71Hthe\u001b[23;75HOpcode\u001b[23;82HSummary\u001b[23;90HTable\u001b[24;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m97\u001b[24;28H108:97\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[24;41H3.1.1.4 Operand Encoding\u001b[24;66HColumn\u001b[24;73Hin\u001b[24;76Hthe\u001b[24;80HInstruction\u001b[24;92HSummary\u001b[24;100H\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[25;6H \u001b[25;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mTable\u001b[0;39;48;2;13;20;16m \u001b[25;35H \u001b[25;39H \u001b[25;51H \u001b[25;58H \u001b[25;62H \u001b[25;72H \u001b[25;78H \u001b[25;91H \u001b[25;97H \u001b[26;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m98\u001b[26;8Hintel-devref-ii.pdf:108:98\u001b[26;41H\u001b[0;38;2;229;238;229;48;2;13;20;16m3.1.1.5\u001b[26;49H64/32-bit\u001b[26;59HMode\u001b[26;64HColumn\u001b[26;71Hin\u001b[26;74Hthe\u001b[26;78HInstruction\u001b[26;90HSummary\u001b[26;98HTa\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[27;6H \u001b[27;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mble\u001b[0;39;48;2;13;20;16m \u001b[27;37H \u001b[27;43H \u001b[27;55H \u001b[28;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m99\u001b[28;28H109:99\u001b[28;37H\u001b[0;38;2;229;238;229;48;2;13;20;16m 3.1.1.6 \u001b[0;38;2;245;247;238;48;2;60;97;74mCPUID\u001b[28;55H\u001b[0;38;2;229;238;229;48;2;13;20;16mSupport\u001b[28;63HColumn\u001b[28;70Hin\u001b[28;73Hthe\u001b[28;77HInstruction\u001b[28;89HSummary\u001b[28;97HTab\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[29;6H \u001b[29;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mle\u001b[0;39;48;2;13;20;16m \u001b[29;37H \u001b[29;43H \u001b[29;50H \u001b[29;54H \u001b[29;58H \u001b[30;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m100\u001b[30;28H109:100\u001b[30;37H\u001b[0;38;2;229;238;229;48;2;13;20;16m 3.1.1.7 Description Column in \u001b[30;73Hhe\u001b[30;76HInstruction\u001b[30;88HSummary\u001b[30;96HTabl\u001b[0m\u001b[20;86H\u001b[?25h"] +[14.95, "o", "\u001b[20;81H\u001b[0;38;2;245;247;238;48;2;107;120;88mCPUID \u001b[0m\u001b[20;86H\u001b[?25h"] +[15.35, "o", "\u001b[20;81H\u001b[0;38;2;190;207;196;48;2;49;71;56mCPUID\u001b[0;39;48;2;49;71;56m \u001b[21;1H\u001b[0;39;48;2;21;32;25m \u001b[21;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m1\u001b[21;6H7\u001b[21;28H310\u001b[21;32H197\u001b[21;40H\u001b[0;38;2;229;238;229;48;2;13;20;16mCMPXCHG8B/CMPXCHG16B—Compare and Exchange\u001b[21;82HBytes\u001b[0;39;48;2;13;20;16m \u001b[21;90H \u001b[21;96H \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[22;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m198\u001b[22;8Hintel-devref-ii.pdf:313:198\u001b[22;40H\u001b[0;38;2;229;238;229;48;2;13;20;16mCOMISD—Compare\u001b[22;55HScalar\u001b[22;62HOrdered\u001b[22;70HDouble\u001b[22;77HPrecision\u001b[22;87HFloating-Poin\u001b[0;38;2;89;103;92;48;2;13;20;16m↩\u001b[23;5H \u001b[23;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mt Values and Set EFLAGS\u001b[0;39;48;2;13;20;16m \u001b[23;41H \u001b[23;49H \u001b[23;61H \u001b[23;68H \u001b[23;71H \u001b[23;75H \u001b[23;82H \u001b[23;90H \u001b[24;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m1\u001b[24;6H9\u001b[24;28H315\u001b[24;32H199\u001b[24;40H\u001b[0;38;2;229;238;229;48;2;13;20;16mCOMISS—Com\u001b[24;51Ha\u001b[24;53He Scalar Ordered Single Preci\u001b[24;83Hion Fl\u001b[24;90Hating-Poin\u001b[25;8Ht Values\u001b[25;17Hand\u001b[25;21HSet\u001b[25;25HEFLAGS\u001b[26;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m200\u001b[26;28H317\u001b[26;32H200\u001b[26;40H\u001b[0;38;2;245;247;238;48;2;60;97;74mCPUID\u001b[0;38;2;229;238;229;48;2;13;20;16m—CPU Identification\u001b[0;39;48;2;13;20;16m \u001b[26;71H \u001b[26;74H \u001b[26;78H \u001b[26;90H \u001b[26;98H \u001b[27;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m201\u001b[27;8Hintel-devref-ii.pdf:318:201\u001b[27;42H\u001b[0;38;2;229;238;229;48;2;13;20;16mBasic\u001b[27;48HCPUID\u001b[27;54HInformation\u001b[28;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m202\u001b[28;28H318\u001b[28;32H202\u001b[28;41H\u001b[0;38;2;229;238;229;48;2;13;20;16m 0H\u001b[0;39;48;2;13;20;16m \u001b[28;49H \u001b[28;55H \u001b[28;63H \u001b[28;70H \u001b[28;73H \u001b[28;77H \u001b[28;89H \u001b[28;97H \u001b[29;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m203\u001b[29;8Hintel-devref-ii.pdf:318:203\u001b[29;44H\u001b[0;38;2;229;238;229;48;2;13;20;16m01H\u001b[30;4H\u001b[0;38;2;89;103;92;48;2;13;20;16m2\u001b[30;6H4\u001b[30;28H318\u001b[30;32H2\u001b[30;34H4\u001b[30;42H\u001b[0;38;2;229;238;229;48;2;13;20;16m 02H\u001b[0;39;48;2;13;20;16m \u001b[30;50H \u001b[30;62H \u001b[30;69H \u001b[30;72H \u001b[30;76H \u001b[30;88H \u001b[30;96H \u001b[0m\u001b[20;86H\u001b[?25h"] +[16.25, "o", "\u001b[26;8H\u001b[0;38;2;245;247;238;48;2;107;120;88mintel-devref-ii.pdf:317:\u001b[0m\u001b[20;86H\u001b[?25h"] +[16.75, "o", "\u001b[9;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/home/goblin/01-resources/\u001b[0;38;2;223;188;229;48;2;49;71;56mintel-devref-ii.pdf\u001b[0;38;2;190;207;196;48;2;49;71;56m [317/2515] Tty PdfSections PdfTint Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[10;1H\u001b[0;39;48;2;21;32;25m \u001b[10;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mCPUID—CPU\u001b[10;13HIdentification\u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[11;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mV\u001b[11;5Hl. 2A 3-217\u001b[0;39;48;2;13;20;16m \u001b[11;24H \u001b[12;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mCPUID—CPU Identification\u001b[0;39;48;2;13;20;16m \u001b[13;15H\u001b[0;38;2;229;238;229;48;2;13;20;16mOperand Encoding\u001b[0;39;48;2;13;20;16m \u001b[14;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mDescription\u001b[0;39;48;2;13;20;16m \u001b[14;19H \u001b[14;22H \u001b[14;26H \u001b[14;32H \u001b[14;46H \u001b[14;55H \u001b[14;67H \u001b[14;74H \u001b[14;83H \u001b[14;86H \u001b[14;91H \u001b[15;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mThe ID flag (bit 21) in the EFLAGS register indicates support for the CPUID instruction. If a\u001b[15;97Hsoft\u001b[16;3Hset and clear this\u001b[16;22Hflag, the p\u001b[16;34Hocesso\u001b[16;42Hexecuting the pro\u001b[16;60Hedure support\u001b[16;74H the CPUID instruction.\u001b[16;98HThi\u001b[17;3Hoperates th\u001b[17;15H same in\u001b[17;24Hn\u001b[17;26Hn-64-bit modes and 64-b\u001b[17;50Ht mode.\u001b[17;58H\u001b[0;39;48;2;13;20;16m \u001b[17;65H \u001b[18;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mCPUID\u001b[18;9Hreturns\u001b[18;17Hprocessor identification\u001b[18;42Hand\u001b[18;46Hfeature\u001b[18;54Hinformation\u001b[18;66Hin\u001b[18;69Hthe\u001b[18;73HEAX,\u001b[18;78HEBX,\u001b[18;83HECX,\u001b[18;88Hand\u001b[18;92HEDX\u001b[18;96Hregis\u001b[20;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/home/goblin/01-resources/\u001b[0;38;2;211;176;217;48;2;29;40;36m+PdfSections\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del LocationsConfig CPUID\u001b[0;39;48;2;29;40;36m \u001b[26;8H\u001b[0;38;2;245;247;238;48;2;60;97;74mintel-devref-ii.pdf:317:200 \u001b[26;41H\u001b[0;38;2;229;238;229;48;2;13;20;16mPUID\u001b[0m\u001b[10;3H\u001b[?25h"] +[18.55, "o", "\u001b[20;61H\u001b[0;38;2;245;247;238;48;2;91;126;90mDel \u001b[0m\u001b[10;3H\u001b[?25h"] +[18.95, "o", "\u001b[11;1H\u001b[0;39;48;2;21;32;25m \u001b[12;1H\u001b[0;39;48;2;96;130;105m \u001b[19;3H\u001b[0;38;2;229;238;229;48;2;13;20;16minstruction’s\u001b[19;17Houtput\u001b[19;24His\u001b[19;27Hdependent\u001b[19;37Hon\u001b[19;40Hthe\u001b[19;44Hcontents\u001b[19;53Hof\u001b[19;56Hthe\u001b[19;60HEAX\u001b[19;64Hregister\u001b[19;73Hupon\u001b[19;78Hexecution\u001b[19;88H(in\u001b[19;92Hsome\u001b[19;97Hcase\u001b[20;1H\u001b[0;39;48;2;21;32;25m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;229;238;229;48;2;13;20;16mFor example, the following pseudocode loads EAX with 00H and causes CPUID to return a Maximum Retu\u001b[21;3Hand the Vendor Identification String\u001b[21;40Hin the appropriate registe\u001b[21;67Hs:\u001b[0;39;48;2;13;20;16m \u001b[21;73H \u001b[21;82H \u001b[22;1H\u001b[0;39;48;2;21;32;25m \u001b[22;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mMOV EAX, 00H\u001b[0;39;48;2;13;20;16m \u001b[22;40H \u001b[22;55H \u001b[22;62H \u001b[22;70H \u001b[22;77H \u001b[22;87H \u001b[23;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mCPUID\u001b[0;39;48;2;13;20;16m \u001b[23;10H \u001b[23;17H \u001b[23;21H \u001b[23;25H \u001b[24;3H\u001b[0;38;2;229;238;229;48;2;13;20;16mTable 3-17 shows information returned, depending on\u001b[24;55Hthe initial value loaded into the EAX register\u001b[25;3HTwo\u001b[25;7Htypes of informa\u001b[25;24Hion are\u001b[25;32Hreturned:\u001b[25;42Hbasic\u001b[25;48Hand\u001b[25;52Hextended\u001b[25;61Hfunction\u001b[25;70Hinformation.\u001b[25;83HIf\u001b[25;86Ha\u001b[25;88Hvalue\u001b[25;94Hentered\u001b[26;3His higher than the maximum input value for basic or extended function\u001b[26;73Hfor\u001b[26;77Hthat\u001b[26;82Hprocessor\u001b[26;92Hthen\u001b[26;97Hthe\u001b[27;3Hhighest basic information leaf is\u001b[27;37Hreturned. For example, us\u001b[27;63Hng\u001b[27;66Hsome\u001b[27;71HIntel\u001b[27;77Hprocessors,\u001b[27;89Hthe\u001b[27;93Hfollowin\u001b[28;3HCPUID.EAX = 05H (* Returns MONITOR/MWAIT\u001b[28;44Hleaf.\u001b[28;50H*)\u001b[29;3HCPUID.EAX = 0AH (* Returns Architectural\u001b[29;44HPerformance\u001b[29;56HMonitoring\u001b[29;67Hleaf.\u001b[29;73H*)\u001b[30;4H\u001b[0;39;48;2;13;20;16m \u001b[30;8H \u001b[30;44H \u001b[0m\u001b[10;3H\u001b[?25h"] +[19.75, "o", "\u001b[0m\u001b[13;3H\u001b[?25h"] +[20.05, "o", "\u001b[10;97H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m /\u001b[0;39;48;2;29;40;36m \u001b[0m\u001b[10;100H\u001b[?25h"] +[20.35, "o", "\u001b[10;96H\u001b[0;39;48;2;29;40;36m \u001b[10;98H\u001b[0;38;2;178;195;184;48;2;29;40;36m/b\u001b[0m\u001b[10;100H\u001b[?25h"] +[20.44, "o", "\u001b[10;95H\u001b[0;39;48;2;29;40;36m \u001b[10;97H\u001b[0;38;2;178;195;184;48;2;29;40;36m/bi\u001b[0m\u001b[10;100H\u001b[?25h"] +[20.53, "o", "\u001b[10;94H\u001b[0;39;48;2;29;40;36m \u001b[10;96H\u001b[0;38;2;178;195;184;48;2;29;40;36m/bit\u001b[0m\u001b[10;100H\u001b[?25h"] +[20.62, "o", "\u001b[10;93H\u001b[0;39;48;2;29;40;36m \u001b[10;95H\u001b[0;38;2;178;195;184;48;2;29;40;36m/bit \u001b[0m\u001b[10;100H\u001b[?25h"] +[20.71, "o", "\u001b[10;92H\u001b[0;39;48;2;29;40;36m \u001b[10;94H\u001b[0;38;2;178;195;184;48;2;29;40;36m/bit 2\u001b[0m\u001b[10;100H\u001b[?25h"] +[20.8, "o", "\u001b[10;91H\u001b[0;39;48;2;29;40;36m \u001b[10;93H\u001b[0;38;2;178;195;184;48;2;29;40;36m/bit 21\u001b[0m\u001b[10;100H\u001b[?25h"] +[21.1, "o", "\u001b[10;91H\u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[12;1H\u001b[0;39;48;2;21;32;25m \u001b[19;3H\u001b[0;39;48;2;13;20;16m \u001b[19;17H \u001b[19;24H \u001b[19;27H \u001b[19;37H \u001b[19;40H \u001b[19;44H \u001b[19;53H \u001b[19;56H \u001b[19;60H \u001b[19;64H \u001b[19;73H \u001b[19;78H \u001b[19;88H \u001b[19;92H \u001b[19;97H \u001b[20;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/home/goblin/01-resources/\u001b[0;38;2;211;176;217;48;2;29;40;36m+Search\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del LocationsConfig\u001b[0;39;48;2;29;40;36m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[21;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 1 intel-devref-ii.pdf:317:1\u001b[0;39;48;2;13;20;16m \u001b[21;40H \u001b[21;43H \u001b[21;47H \u001b[21;59H \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[22;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 2 \u001b[0;38;2;229;238;229;48;2;13;20;16mbit\u001b[22;12H21\u001b[0;39;48;2;13;20;16m \u001b[23;1H\u001b[0;39;48;2;96;130;105m \u001b[23;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 3 intel-devref-ii.pdf:320:1\u001b[24;1H\u001b[0;39;48;2;96;130;105m \u001b[24;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 4 \u001b[0;38;2;229;238;229;48;2;13;20;16mbit 21\u001b[0;39;48;2;13;20;16m \u001b[24;20H \u001b[24;32H \u001b[24;42H \u001b[24;52H \u001b[24;55H \u001b[24;59H \u001b[24;67H \u001b[24;73H \u001b[24;80H \u001b[24;85H \u001b[24;89H \u001b[24;93H \u001b[25;1H\u001b[0;39;48;2;96;130;105m \u001b[25;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 5 intel-devref-ii.pdf:321:1\u001b[0;39;48;2;13;20;16m \u001b[25;42H \u001b[25;48H \u001b[25;52H \u001b[25;61H \u001b[25;70H \u001b[25;83H \u001b[25;86H \u001b[25;88H \u001b[25;94H \u001b[26;1H\u001b[0;39;48;2;96;130;105m \u001b[26;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[26;6H6 \u001b[0;38;2;229;238;229;48;2;13;20;16mbit 21\u001b[0;39;48;2;13;20;16m \u001b[26;18H \u001b[26;22H \u001b[26;30H \u001b[26;36H \u001b[26;42H \u001b[26;46H \u001b[26;52H \u001b[26;55H \u001b[26;64H \u001b[26;73H \u001b[26;77H \u001b[26;82H \u001b[26;92H \u001b[26;97H \u001b[27;1H\u001b[0;39;48;2;96;130;105m \u001b[27;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 7 intel-devref-ii.pdf:323:1\u001b[27;34H\u001b[0;39;48;2;13;20;16m \u001b[27;37H \u001b[27;47H \u001b[27;51H \u001b[27;60H \u001b[27;66H \u001b[27;71H \u001b[27;77H \u001b[27;89H \u001b[27;93H \u001b[28;1H\u001b[0;39;48;2;96;130;105m \u001b[28;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 8 \u001b[0;38;2;229;238;229;48;2;13;20;16mbit 21\u001b[28;15H\u001b[0;39;48;2;13;20;16m \u001b[28;19H \u001b[28;22H \u001b[28;30H \u001b[28;44H \u001b[28;50H \u001b[29;1H\u001b[0;39;48;2;96;130;105m \u001b[29;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 9 intel-devref-ii.pdf:684:1\u001b[0;39;48;2;13;20;16m \u001b[29;44H \u001b[29;56H \u001b[29;67H \u001b[29;73H \u001b[30;5H\u001b[0;38;2;89;103;92;48;2;13;20;16m10\u001b[30;8H\u001b[0;38;2;229;238;229;48;2;13;20;16mbit\u001b[30;12H21\u001b[0m\u001b[13;3H\u001b[?25h"] +[23.1, "o", ""] diff --git a/docs/site/casts/terminals.cast b/docs/site/casts/terminals.cast new file mode 100644 index 00000000..bac022a2 --- /dev/null +++ b/docs/site/casts/terminals.cast @@ -0,0 +1,59 @@ +{"version": 2, "width": 100, "height": 30, "title": "Terminals as panes", "env": {"TERM": "xterm-256color", "SHELL": "/bin/sh"}} +[0.0, "o", "\u001b[?25l\u001b[0m\u001b[2J\u001b[1;1H\u001b[0;38;2;178;195;184;48;2;29;40;36mNewcol Joincol Find Grep Help Changelog Tutor Dump Themes Config Debug Exit\u001b[0;39;48;2;29;40;36m \u001b[2;1H\u001b[0;38;2;255;255;255;48;2;136;116;85m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;49;71;56m \u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello/\u001b[0;38;2;223;188;229;48;2;49;71;56mNOTES\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[4;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;97;111;100;48;2;13;20;16;1m 1 \u001b[0;38;2;229;238;229;48;2;13;20;16mhello: notes\u001b[0;39;48;2;13;20;16m \u001b[5;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 2 \u001b[0;39;48;2;13;20;16m \u001b[6;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 3 \u001b[0;38;2;229;238;229;48;2;13;20;16mThe sum of the squares of 1 to 4 is 30.\u001b[0;39;48;2;13;20;16m \u001b[7;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 4 \u001b[0;38;2;229;238;229;48;2;13;20;16mWhat ./hello prints:\u001b[0;39;48;2;13;20;16m \u001b[8;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 5 \u001b[0;39;48;2;13;20;16m \u001b[9;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0;39;48;2;13;20;16m \u001b[10;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[11;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[12;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[13;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[14;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[15;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[16;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[17;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[18;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[19;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[20;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[21;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[22;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[23;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[24;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[25;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[26;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[27;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[28;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[29;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[30;1H\u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[0;39;48;2;13;20;16m \u001b[0m\u001b[4;8H\u001b[?25h"] +[1.2, "o", "\u001b[3;31H\u001b[0;38;2;245;247;238;48;2;91;126;90mTty \u001b[0m\u001b[4;8H\u001b[?25h"] +[1.7, "o", "\u001b[3;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello/\u001b[0;38;2;211;176;217;48;2;29;40;36mNOTES\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[4;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 1 \u001b[4;96H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mTty\u001b[0;39;48;2;29;40;36m \u001b[8;1H\u001b[0;39;48;2;21;32;25m \u001b[9;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m$ \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello \u001b[0;38;2;223;188;229;48;2;49;71;56mTty+sh\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Mode Filter Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[10;3H\u001b[0;38;2;229;238;229;48;2;13;20;16m$\u001b[0m\u001b[10;5H\u001b[?25h"] +[2.7, "o", "\u001b[4;96H\u001b[0;39;48;2;13;20;16m \u001b[9;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0m\u001b[10;5H\u001b[?25h"] +[3.0, "o", "\u001b[2;3H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;255;255;255;48;2;136;116;85m \u001b[2;54H\u001b[0;38;2;190;207;196;48;2;49;71;56mNew\u001b[2;58HTty\u001b[2;62HFind\u001b[2;67HGrep\u001b[2;72HJoincol\u001b[2;80HDelcol\u001b[3;51H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello \u001b[0;38;2;223;188;229;48;2;49;71;56mTty+sh\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Mode Filter Collaps\u001b[4;51H\u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56me Del\u001b[0;39;48;2;49;71;56m \u001b[5;51H\u001b[0;39;48;2;96;130;105m \u001b[5;53H\u001b[0;38;2;229;238;229;48;2;13;20;16m$\u001b[6;51H\u001b[0;39;48;2;96;130;105m \u001b[7;51H \u001b[8;1H \u001b[8;51H \u001b[9;1H \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0;39;48;2;13;20;16m \u001b[0;39;48;2;96;130;105m \u001b[0;39;48;2;13;20;16m \u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[10;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m \u001b[10;51H\u001b[0;39;48;2;96;130;105m \u001b[11;51H \u001b[12;51H \u001b[13;51H \u001b[14;51H \u001b[15;51H \u001b[16;51H \u001b[17;51H \u001b[18;51H \u001b[19;51H \u001b[20;51H \u001b[21;51H \u001b[22;51H \u001b[23;51H \u001b[24;51H \u001b[25;51H \u001b[26;51H \u001b[27;51H \u001b[28;51H \u001b[29;51H \u001b[30;51H \u001b[0m\u001b[5;55H\u001b[?25h"] +[3.4, "o", "\u001b[3;51H\u001b[0;38;2;0;0;0;48;2;173;211;138m$\u001b[0m\u001b[5;55H\u001b[?25h"] +[4.0, "o", "\u001b[5;55H\u001b[0;38;2;229;238;229;48;2;13;20;16mm\u001b[0m\u001b[5;56H\u001b[?25h"] +[4.07, "o", "\u001b[5;56H\u001b[0;38;2;229;238;229;48;2;13;20;16ma\u001b[0m\u001b[5;57H\u001b[?25h"] +[4.14, "o", "\u001b[5;57H\u001b[0;38;2;229;238;229;48;2;13;20;16mk\u001b[0m\u001b[5;58H\u001b[?25h"] +[4.21, "o", "\u001b[5;58H\u001b[0;38;2;229;238;229;48;2;13;20;16me\u001b[0m\u001b[5;59H\u001b[?25h"] +[4.28, "o", "\u001b[0m\u001b[5;60H\u001b[?25h"] +[4.35, "o", "\u001b[5;60H\u001b[0;38;2;229;238;229;48;2;13;20;16m&\u001b[0m\u001b[5;61H\u001b[?25h"] +[4.42, "o", "\u001b[5;61H\u001b[0;38;2;229;238;229;48;2;13;20;16m&\u001b[0m\u001b[5;62H\u001b[?25h"] +[4.49, "o", "\u001b[0m\u001b[5;63H\u001b[?25h"] +[4.56, "o", "\u001b[5;63H\u001b[0;38;2;229;238;229;48;2;13;20;16m.\u001b[0m\u001b[5;64H\u001b[?25h"] +[4.63, "o", "\u001b[5;64H\u001b[0;38;2;229;238;229;48;2;13;20;16m/\u001b[0m\u001b[5;65H\u001b[?25h"] +[4.7, "o", "\u001b[5;65H\u001b[0;38;2;229;238;229;48;2;13;20;16mh\u001b[0m\u001b[5;66H\u001b[?25h"] +[4.77, "o", "\u001b[5;66H\u001b[0;38;2;229;238;229;48;2;13;20;16me\u001b[0m\u001b[5;67H\u001b[?25h"] +[4.84, "o", "\u001b[5;67H\u001b[0;38;2;229;238;229;48;2;13;20;16ml\u001b[0m\u001b[5;68H\u001b[?25h"] +[4.91, "o", "\u001b[5;68H\u001b[0;38;2;229;238;229;48;2;13;20;16ml\u001b[0m\u001b[5;69H\u001b[?25h"] +[4.98, "o", "\u001b[5;69H\u001b[0;38;2;229;238;229;48;2;13;20;16mo\u001b[0m\u001b[5;70H\u001b[?25h"] +[5.38, "o", "\u001b[6;53H\u001b[0;38;2;229;238;229;48;2;13;20;16msquares:\u001b[6;62H30\u001b[7;53H$\u001b[0m\u001b[7;55H\u001b[?25h"] +[6.58, "o", "\u001b[3;51H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0m\u001b[7;55H\u001b[?25h"] +[7.18, "o", "\u001b[0m\u001b[6;55H\u001b[?25h"] +[7.58, "o", "\u001b[6;53H\u001b[0;38;2;245;247;238;48;2;60;97;74msquares: 30 \u001b[0m\u001b[6;64H\u001b[?25h"] +[8.88, "o", "\u001b[2;3H\u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;49;71;56m \u001b[2;53H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;29;40;36m \u001b[3;1H\u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello/\u001b[0;38;2;223;188;229;48;2;49;71;56mNOTES\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Tty Collapse Del\u001b[0;39;48;2;49;71;56m \u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello \u001b[0;38;2;211;176;217;48;2;29;40;36mTty+sh\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Mode Filter Collaps\u001b[4;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 1 \u001b[4;51H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36me Del\u001b[0;39;48;2;29;40;36m \u001b[5;95H \u001b[0;38;2;178;195;184;48;2;29;40;36mLeft\u001b[0;39;48;2;29;40;36m \u001b[0m\u001b[4;8H\u001b[?25h"] +[9.48, "o", "\u001b[5;95H\u001b[0;38;2;229;238;229;48;2;13;20;16m \u001b[0m\u001b[4;8H\u001b[?25h"] +[9.7, "o", "\u001b[4;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 1 \u001b[8;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 5 \u001b[0m\u001b[8;8H\u001b[?25h"] +[10.2, "o", "\u001b[3;2H\u001b[0;38;2;0;0;0;48;2;249;203;112;1m*\u001b[8;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 5 \u001b[9;3H\u001b[0;38;2;97;111;100;48;2;13;20;16;1m 6 \u001b[0;38;2;245;247;238;48;2;60;97;74msquares: 30 \u001b[10;6H\u001b[0;38;2;89;103;92;48;2;13;20;16m7\u001b[0m\u001b[9;19H\u001b[?25h"] +[11.4, "o", "\u001b[2;3H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;29;40;36m \u001b[2;53H\u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56mNew Tty Find Grep Joincol Delcol\u001b[0;39;48;2;49;71;56m \u001b[3;1H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[3;3H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello/\u001b[0;38;2;211;176;217;48;2;29;40;36mNOTES\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;0;0;0;48;2;173;211;138m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56m/tmp/cast/hello \u001b[0;38;2;223;188;229;48;2;49;71;56mTty+sh\u001b[0;38;2;190;207;196;48;2;49;71;56m Save Mode Filter Collaps\u001b[4;44H\u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36mRight\u001b[0;39;48;2;29;40;36m \u001b[0;39;48;2;49;71;56m \u001b[0;38;2;190;207;196;48;2;49;71;56me Del\u001b[0;39;48;2;49;71;56m \u001b[9;3H\u001b[0;38;2;89;103;92;48;2;13;20;16m 6 \u001b[0m\u001b[6;64H\u001b[?25h"] +[11.8, "o", "\u001b[3;51H\u001b[0;38;2;0;0;0;48;2;173;211;138m$\u001b[4;44H\u001b[0;39;48;2;13;20;16m \u001b[6;53H\u001b[0;38;2;229;238;229;48;2;13;20;16msquares: 30 \u001b[0m\u001b[7;55H\u001b[?25h"] +[12.4, "o", "\u001b[7;55H\u001b[0;38;2;229;238;229;48;2;13;20;16mg\u001b[0m\u001b[7;56H\u001b[?25h"] +[12.47, "o", "\u001b[7;56H\u001b[0;38;2;229;238;229;48;2;13;20;16mi\u001b[0m\u001b[7;57H\u001b[?25h"] +[12.54, "o", "\u001b[7;57H\u001b[0;38;2;229;238;229;48;2;13;20;16mt\u001b[0m\u001b[7;58H\u001b[?25h"] +[12.61, "o", "\u001b[0m\u001b[7;59H\u001b[?25h"] +[12.68, "o", "\u001b[7;59H\u001b[0;38;2;229;238;229;48;2;13;20;16ml\u001b[0m\u001b[7;60H\u001b[?25h"] +[12.75, "o", "\u001b[7;60H\u001b[0;38;2;229;238;229;48;2;13;20;16mo\u001b[0m\u001b[7;61H\u001b[?25h"] +[12.82, "o", "\u001b[7;61H\u001b[0;38;2;229;238;229;48;2;13;20;16mg\u001b[0m\u001b[7;62H\u001b[?25h"] +[12.89, "o", "\u001b[0m\u001b[7;63H\u001b[?25h"] +[12.96, "o", "\u001b[7;63H\u001b[0;38;2;229;238;229;48;2;13;20;16m-\u001b[0m\u001b[7;64H\u001b[?25h"] +[13.03, "o", "\u001b[7;64H\u001b[0;38;2;229;238;229;48;2;13;20;16m-\u001b[0m\u001b[7;65H\u001b[?25h"] +[13.1, "o", "\u001b[7;65H\u001b[0;38;2;229;238;229;48;2;13;20;16ms\u001b[0m\u001b[7;66H\u001b[?25h"] +[13.17, "o", "\u001b[7;66H\u001b[0;38;2;229;238;229;48;2;13;20;16mt\u001b[0m\u001b[7;67H\u001b[?25h"] +[13.24, "o", "\u001b[7;67H\u001b[0;38;2;229;238;229;48;2;13;20;16ma\u001b[0m\u001b[7;68H\u001b[?25h"] +[13.31, "o", "\u001b[7;68H\u001b[0;38;2;229;238;229;48;2;13;20;16mt\u001b[0m\u001b[7;69H\u001b[?25h"] +[13.38, "o", "\u001b[0m\u001b[7;70H\u001b[?25h"] +[13.45, "o", "\u001b[7;70H\u001b[0;38;2;229;238;229;48;2;13;20;16m|\u001b[0m\u001b[7;71H\u001b[?25h"] +[13.52, "o", "\u001b[0m\u001b[7;72H\u001b[?25h"] +[13.59, "o", "\u001b[7;72H\u001b[0;38;2;229;238;229;48;2;13;20;16mp\u001b[0m\u001b[7;73H\u001b[?25h"] +[13.66, "o", "\u001b[7;73H\u001b[0;38;2;229;238;229;48;2;13;20;16ma\u001b[0m\u001b[7;74H\u001b[?25h"] +[13.73, "o", "\u001b[7;74H\u001b[0;38;2;229;238;229;48;2;13;20;16mr\u001b[0m\u001b[7;75H\u001b[?25h"] +[13.8, "o", "\u001b[7;75H\u001b[0;38;2;229;238;229;48;2;13;20;16md\u001b[0m\u001b[7;76H\u001b[?25h"] +[13.87, "o", "\u001b[7;76H\u001b[0;38;2;229;238;229;48;2;13;20;16me\u001b[0m\u001b[7;77H\u001b[?25h"] +[13.94, "o", "\u001b[7;77H\u001b[0;38;2;229;238;229;48;2;13;20;16ms\u001b[0m\u001b[7;78H\u001b[?25h"] +[14.01, "o", "\u001b[0m\u001b[7;79H\u001b[?25h"] +[14.08, "o", "\u001b[7;79H\u001b[0;38;2;229;238;229;48;2;13;20;16m-\u001b[0m\u001b[7;80H\u001b[?25h"] +[14.48, "o", "\u001b[8;53H\u001b[0;38;2;229;238;229;48;2;13;20;16m$\u001b[18;51H\u001b[0;38;2;255;255;255;48;2;73;102;86m \u001b[0;39;48;2;29;40;36m \u001b[0;38;2;178;195;184;48;2;29;40;36m/tmp/cast/hello/\u001b[0;38;2;211;176;217;48;2;29;40;36m+Pager\u001b[0;38;2;178;195;184;48;2;29;40;36m Save Tty Collapse Del\u001b[0;39;48;2;29;40;36m \u001b[19;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m1\u001b[19;58H\u001b[0;38;2;233;198;128;48;2;13;20;16mcommit\u001b[19;65H691de50\u001b[20;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m2\u001b[20;58H\u001b[0;38;2;229;238;229;48;2;13;20;16mAuthor:\u001b[20;66HDemo\u001b[20;71H<[email protected]>\u001b[21;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m3\u001b[21;58H\u001b[0;38;2;229;238;229;48;2;13;20;16mDate:\u001b[21;66HSun\u001b[21;70HSep\u001b[21;74H27\u001b[21;77H16:40:00\u001b[21;86H2026\u001b[21;91H+0000\u001b[22;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m4\u001b[23;51H\u001b[0;39;48;2;21;32;25m \u001b[23;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m5\u001b[23;62H\u001b[0;38;2;229;238;229;48;2;13;20;16mKeep\u001b[23;67Hnotes\u001b[24;51H\u001b[0;39;48;2;21;32;25m \u001b[24;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m6\u001b[25;51H\u001b[0;39;48;2;21;32;25m \u001b[25;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m7\u001b[25;59H\u001b[0;38;2;229;238;229;48;2;13;20;16mNOTES\u001b[25;65H|\u001b[25;67H5\u001b[25;69H\u001b[0;38;2;182;206;148;48;2;13;20;16m+++++\u001b[26;51H\u001b[0;39;48;2;21;32;25m \u001b[26;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m8\u001b[26;59H\u001b[0;38;2;229;238;229;48;2;13;20;16m1\u001b[26;61Hfile\u001b[26;66Hchanged,\u001b[26;75H5\u001b[26;77Hinsertions(+)\u001b[27;51H\u001b[0;39;48;2;21;32;25m \u001b[27;56H\u001b[0;38;2;89;103;92;48;2;13;20;16m9\u001b[28;51H\u001b[0;39;48;2;21;32;25m \u001b[28;55H\u001b[0;38;2;89;103;92;48;2;13;20;16m10\u001b[28;58H\u001b[0;38;2;233;198;128;48;2;13;20;16mcommit\u001b[28;65H09d5c1f\u001b[29;51H\u001b[0;39;48;2;21;32;25m \u001b[29;55H\u001b[0;38;2;89;103;92;48;2;13;20;16m11\u001b[29;58H\u001b[0;38;2;229;238;229;48;2;13;20;16mAuthor:\u001b[29;66HDemo\u001b[29;71H<[email protected]>\u001b[30;51H\u001b[0;39;48;2;21;32;25m \u001b[30;55H\u001b[0;38;2;89;103;92;48;2;13;20;16m12\u001b[30;58H\u001b[0;38;2;229;238;229;48;2;13;20;16mDate:\u001b[30;66HThu\u001b[30;70HSep\u001b[30;74H24\u001b[30;77H09:15:00\u001b[30;86H2026\u001b[30;91H+0000\u001b[0m\u001b[8;55H\u001b[?25h"] +[16.48, "o", ""] diff --git a/docs/site/media/captions.txt b/docs/site/media/captions.txt index 55f64d5b..4879cb12 100644 --- a/docs/site/media/captions.txt +++ b/docs/site/media/captions.txt @@ -1,4 +1,13 @@ -text-is-the-interface: Middle-click runs a word; right-click an error opens the file. -terminals-are-panes: A shell is a pane: Ctrl-b, then move over its output. -scripting-over-9p: The session is files: a shell script reads and writes its panes. -diff-review: git diff pages into a pane; right-click a change to open it. +pdf-navigation: A 2,515-page PDF: page, jump to CPUID, search, step hits. +image-pane: Right-click an image's name, even in a shell, to open it. +pdf-tint-fit: PdfTint tints the page, PdfFit fits it, a page address jumps. +text-is-the-interface: Middle-click make in the README; right-click the error. +terminals-are-panes: A terminal is a pane: Ctrl-b, then move over its output. +scripting-over-9p: A script drives the session through its virtual filesystem (9P). +diff-review: Right-click a diff line to open that line of the file. +chords: Hold left, click middle to cut; click right to paste. +columns: Newcol adds a column; a look opens there; Alt-c moves a pane. +search: Grep lists the hits; n and N walk them; right-click opens one. +where-commands-run: A file's tag runs in its directory; the column tag, in the session's. +edit-via-ctl: An Edit written to ctl changes every sum; one Undo restores. +wait-editor: git commit's message opens in a pane; Del returns it to git. diff --git a/docs/site/media/chords.mp4 b/docs/site/media/chords.mp4 Binary files differnew file mode 100644 index 00000000..43bc556b --- /dev/null +++ b/docs/site/media/chords.mp4 diff --git a/docs/site/media/chords.png b/docs/site/media/chords.png Binary files differnew file mode 100644 index 00000000..a140347c --- /dev/null +++ b/docs/site/media/chords.png diff --git a/docs/site/media/chords.webm b/docs/site/media/chords.webm Binary files differnew file mode 100644 index 00000000..42a6f4e6 --- /dev/null +++ b/docs/site/media/chords.webm diff --git a/docs/site/media/clips.toml b/docs/site/media/clips.toml index 9a83d681..f2406396 100644 --- a/docs/site/media/clips.toml +++ b/docs/site/media/clips.toml @@ -1,25 +1,77 @@ # The landing page's recordings, in the order shown. For each clip the # site ships media/<name>.webm and media/<name>.mp4, with media/<name>.png -# as the poster; the first ready clip's poster is also the landing's -# hero image. While `ready` is false the clip shows placeholder.svg and +# as the poster; a caption may hold markup (#link). `landing = false` keeps a clip off the landing (the +# terminal casts show the same) while its files stay for the chapters. While `ready` is false the clip shows placeholder.svg and # no video, so the site builds before a recording exists. [[clip]] +name = "pdf-navigation" +caption = "A 2,515-page PDF: page, jump to CPUID, search, step hits." +ready = true + +[[clip]] +name = "image-pane" +caption = "Right-click an image's name, even in a shell, to open it." +ready = true + +[[clip]] +name = "pdf-tint-fit" +caption = "PdfTint tints the page, PdfFit fits it, a page address jumps." +ready = true + +[[clip]] name = "text-is-the-interface" -caption = "Middle-click runs a word; right-click an error opens its line." +caption = "Middle-click make in the README; right-click the error." ready = true [[clip]] name = "terminals-are-panes" caption = "A terminal is a pane: Ctrl-b, then move over its output." ready = true +landing = false [[clip]] name = "scripting-over-9p" -caption = "A script drives the session through its virtual filesystem (9P)." +caption = "A shell under #link(\"setup.html#ninens\")[9ns], where the session is a directory: ls, cat, echo." ready = true [[clip]] name = "diff-review" caption = "Right-click a diff line to open that line of the file." ready = true + +[[clip]] +name = "chords" +caption = "Hold left, click middle to cut; click right to paste." +ready = true +landing = false + +[[clip]] +name = "columns" +caption = "Newcol adds a column; a look opens there; Alt-c moves a pane." +ready = true +landing = false + +[[clip]] +name = "search" +caption = "Grep lists the hits; n and N walk them; right-click opens one." +ready = true +landing = false + +[[clip]] +name = "where-commands-run" +caption = "File tags run in their directory; column tags, in the session's." +ready = true +landing = false + +[[clip]] +name = "edit-via-ctl" +caption = "An Edit written to ctl changes every sum; one Undo restores." +ready = true +landing = false + +[[clip]] +name = "wait-editor" +caption = "git commit's message opens in a pane; Del returns it to git." +ready = true +landing = false diff --git a/docs/site/media/columns.mp4 b/docs/site/media/columns.mp4 Binary files differnew file mode 100644 index 00000000..48bc462b --- /dev/null +++ b/docs/site/media/columns.mp4 diff --git a/docs/site/media/columns.png b/docs/site/media/columns.png Binary files differnew file mode 100644 index 00000000..f8cc1801 --- /dev/null +++ b/docs/site/media/columns.png diff --git a/docs/site/media/columns.webm b/docs/site/media/columns.webm Binary files differnew file mode 100644 index 00000000..ddb6bdfc --- /dev/null +++ b/docs/site/media/columns.webm diff --git a/docs/site/media/diff-review.mp4 b/docs/site/media/diff-review.mp4 Binary files differindex e3bb2f5b..73fa1a76 100644 --- a/docs/site/media/diff-review.mp4 +++ b/docs/site/media/diff-review.mp4 diff --git a/docs/site/media/diff-review.png b/docs/site/media/diff-review.png Binary files differindex fda184e3..76a7dc43 100644 --- a/docs/site/media/diff-review.png +++ b/docs/site/media/diff-review.png diff --git a/docs/site/media/diff-review.webm b/docs/site/media/diff-review.webm Binary files differindex ed201b13..da7756f9 100644 --- a/docs/site/media/diff-review.webm +++ b/docs/site/media/diff-review.webm diff --git a/docs/site/media/edit-via-ctl.mp4 b/docs/site/media/edit-via-ctl.mp4 Binary files differnew file mode 100644 index 00000000..d63f6e7f --- /dev/null +++ b/docs/site/media/edit-via-ctl.mp4 diff --git a/docs/site/media/edit-via-ctl.png b/docs/site/media/edit-via-ctl.png Binary files differnew file mode 100644 index 00000000..7a21d734 --- /dev/null +++ b/docs/site/media/edit-via-ctl.png diff --git a/docs/site/media/edit-via-ctl.webm b/docs/site/media/edit-via-ctl.webm Binary files differnew file mode 100644 index 00000000..77639d34 --- /dev/null +++ b/docs/site/media/edit-via-ctl.webm diff --git a/docs/site/media/image-pane.mp4 b/docs/site/media/image-pane.mp4 Binary files differnew file mode 100644 index 00000000..9fb1a0e9 --- /dev/null +++ b/docs/site/media/image-pane.mp4 diff --git a/docs/site/media/image-pane.png b/docs/site/media/image-pane.png Binary files differnew file mode 100644 index 00000000..94eb7b50 --- /dev/null +++ b/docs/site/media/image-pane.png diff --git a/docs/site/media/image-pane.webm b/docs/site/media/image-pane.webm Binary files differnew file mode 100644 index 00000000..764be10c --- /dev/null +++ b/docs/site/media/image-pane.webm diff --git a/docs/site/media/pdf-navigation.mp4 b/docs/site/media/pdf-navigation.mp4 Binary files differnew file mode 100644 index 00000000..f0369f7b --- /dev/null +++ b/docs/site/media/pdf-navigation.mp4 diff --git a/docs/site/media/pdf-navigation.png b/docs/site/media/pdf-navigation.png Binary files differnew file mode 100644 index 00000000..79dd6453 --- /dev/null +++ b/docs/site/media/pdf-navigation.png diff --git a/docs/site/media/pdf-navigation.webm b/docs/site/media/pdf-navigation.webm Binary files differnew file mode 100644 index 00000000..17c8b1b3 --- /dev/null +++ b/docs/site/media/pdf-navigation.webm diff --git a/docs/site/media/pdf-tint-fit.mp4 b/docs/site/media/pdf-tint-fit.mp4 Binary files differnew file mode 100644 index 00000000..a1b4a5a6 --- /dev/null +++ b/docs/site/media/pdf-tint-fit.mp4 diff --git a/docs/site/media/pdf-tint-fit.png b/docs/site/media/pdf-tint-fit.png Binary files differnew file mode 100644 index 00000000..923ab143 --- /dev/null +++ b/docs/site/media/pdf-tint-fit.png diff --git a/docs/site/media/pdf-tint-fit.webm b/docs/site/media/pdf-tint-fit.webm Binary files differnew file mode 100644 index 00000000..e641101f --- /dev/null +++ b/docs/site/media/pdf-tint-fit.webm diff --git a/docs/site/media/scripting-over-9p.webm b/docs/site/media/scripting-over-9p.webm Binary files differindex b6f192b3..bf39a7e8 100644 --- a/docs/site/media/scripting-over-9p.webm +++ b/docs/site/media/scripting-over-9p.webm diff --git a/docs/site/media/search.mp4 b/docs/site/media/search.mp4 Binary files differnew file mode 100644 index 00000000..6c9c9445 --- /dev/null +++ b/docs/site/media/search.mp4 diff --git a/docs/site/media/search.png b/docs/site/media/search.png Binary files differnew file mode 100644 index 00000000..40e5bed5 --- /dev/null +++ b/docs/site/media/search.png diff --git a/docs/site/media/search.webm b/docs/site/media/search.webm Binary files differnew file mode 100644 index 00000000..e1581570 --- /dev/null +++ b/docs/site/media/search.webm diff --git a/docs/site/media/terminals-are-panes.webm b/docs/site/media/terminals-are-panes.webm Binary files differindex 3f1ab09e..15ee73fe 100644 --- a/docs/site/media/terminals-are-panes.webm +++ b/docs/site/media/terminals-are-panes.webm diff --git a/docs/site/media/text-is-the-interface.mp4 b/docs/site/media/text-is-the-interface.mp4 Binary files differindex 19545731..b4a12c87 100644 --- a/docs/site/media/text-is-the-interface.mp4 +++ b/docs/site/media/text-is-the-interface.mp4 diff --git a/docs/site/media/text-is-the-interface.png b/docs/site/media/text-is-the-interface.png Binary files differindex 81a73aee..a31dcb78 100644 --- a/docs/site/media/text-is-the-interface.png +++ b/docs/site/media/text-is-the-interface.png diff --git a/docs/site/media/text-is-the-interface.webm b/docs/site/media/text-is-the-interface.webm Binary files differindex 88c02d11..76c2c06b 100644 --- a/docs/site/media/text-is-the-interface.webm +++ b/docs/site/media/text-is-the-interface.webm diff --git a/docs/site/media/themes/acme.png b/docs/site/media/themes/acme.png Binary files differnew file mode 100644 index 00000000..da647db1 --- /dev/null +++ b/docs/site/media/themes/acme.png diff --git a/docs/site/media/themes/alucard.png b/docs/site/media/themes/alucard.png Binary files differnew file mode 100644 index 00000000..dab6ce80 --- /dev/null +++ b/docs/site/media/themes/alucard.png diff --git a/docs/site/media/themes/atelier.png b/docs/site/media/themes/atelier.png Binary files differnew file mode 100644 index 00000000..a8c36f2a --- /dev/null +++ b/docs/site/media/themes/atelier.png diff --git a/docs/site/media/themes/ayu_dark.png b/docs/site/media/themes/ayu_dark.png Binary files differnew file mode 100644 index 00000000..711ed8aa --- /dev/null +++ b/docs/site/media/themes/ayu_dark.png diff --git a/docs/site/media/themes/ayu_light.png b/docs/site/media/themes/ayu_light.png Binary files differnew file mode 100644 index 00000000..0ddcb9af --- /dev/null +++ b/docs/site/media/themes/ayu_light.png diff --git a/docs/site/media/themes/ayu_mirage.png b/docs/site/media/themes/ayu_mirage.png Binary files differnew file mode 100644 index 00000000..56676d1f --- /dev/null +++ b/docs/site/media/themes/ayu_mirage.png diff --git a/docs/site/media/themes/catppuccin_frappe.png b/docs/site/media/themes/catppuccin_frappe.png Binary files differnew file mode 100644 index 00000000..58c13dbe --- /dev/null +++ b/docs/site/media/themes/catppuccin_frappe.png diff --git a/docs/site/media/themes/catppuccin_latte.png b/docs/site/media/themes/catppuccin_latte.png Binary files differnew file mode 100644 index 00000000..27e58ce0 --- /dev/null +++ b/docs/site/media/themes/catppuccin_latte.png diff --git a/docs/site/media/themes/catppuccin_macchiato.png b/docs/site/media/themes/catppuccin_macchiato.png Binary files differnew file mode 100644 index 00000000..fb32c742 --- /dev/null +++ b/docs/site/media/themes/catppuccin_macchiato.png diff --git a/docs/site/media/themes/catppuccin_mocha.png b/docs/site/media/themes/catppuccin_mocha.png Binary files differnew file mode 100644 index 00000000..e16e4224 --- /dev/null +++ b/docs/site/media/themes/catppuccin_mocha.png diff --git a/docs/site/media/themes/clay.png b/docs/site/media/themes/clay.png Binary files differnew file mode 100644 index 00000000..117b731d --- /dev/null +++ b/docs/site/media/themes/clay.png diff --git a/docs/site/media/themes/dark.png b/docs/site/media/themes/dark.png Binary files differnew file mode 100644 index 00000000..6346759e --- /dev/null +++ b/docs/site/media/themes/dark.png diff --git a/docs/site/media/themes/dark_plus.png b/docs/site/media/themes/dark_plus.png Binary files differnew file mode 100644 index 00000000..6a750655 --- /dev/null +++ b/docs/site/media/themes/dark_plus.png diff --git a/docs/site/media/themes/daybreak.png b/docs/site/media/themes/daybreak.png Binary files differnew file mode 100644 index 00000000..ca3dcc5c --- /dev/null +++ b/docs/site/media/themes/daybreak.png diff --git a/docs/site/media/themes/doom_one.png b/docs/site/media/themes/doom_one.png Binary files differnew file mode 100644 index 00000000..95f13135 --- /dev/null +++ b/docs/site/media/themes/doom_one.png diff --git a/docs/site/media/themes/doom_one_light.png b/docs/site/media/themes/doom_one_light.png Binary files differnew file mode 100644 index 00000000..c8c4c69a --- /dev/null +++ b/docs/site/media/themes/doom_one_light.png diff --git a/docs/site/media/themes/dracula.png b/docs/site/media/themes/dracula.png Binary files differnew file mode 100644 index 00000000..64eea04a --- /dev/null +++ b/docs/site/media/themes/dracula.png diff --git a/docs/site/media/themes/dracula_soft.png b/docs/site/media/themes/dracula_soft.png Binary files differnew file mode 100644 index 00000000..9ef81583 --- /dev/null +++ b/docs/site/media/themes/dracula_soft.png diff --git a/docs/site/media/themes/duckbones.png b/docs/site/media/themes/duckbones.png Binary files differnew file mode 100644 index 00000000..9809ab36 --- /dev/null +++ b/docs/site/media/themes/duckbones.png diff --git a/docs/site/media/themes/dusk.png b/docs/site/media/themes/dusk.png Binary files differnew file mode 100644 index 00000000..0d95b59c --- /dev/null +++ b/docs/site/media/themes/dusk.png diff --git a/docs/site/media/themes/forestbones_dark.png b/docs/site/media/themes/forestbones_dark.png Binary files differnew file mode 100644 index 00000000..ea399605 --- /dev/null +++ b/docs/site/media/themes/forestbones_dark.png diff --git a/docs/site/media/themes/forestbones_light.png b/docs/site/media/themes/forestbones_light.png Binary files differnew file mode 100644 index 00000000..862858de --- /dev/null +++ b/docs/site/media/themes/forestbones_light.png diff --git a/docs/site/media/themes/forge.png b/docs/site/media/themes/forge.png Binary files differnew file mode 100644 index 00000000..bab91d48 --- /dev/null +++ b/docs/site/media/themes/forge.png diff --git a/docs/site/media/themes/forge_black.png b/docs/site/media/themes/forge_black.png Binary files differnew file mode 100644 index 00000000..e09320ed --- /dev/null +++ b/docs/site/media/themes/forge_black.png diff --git a/docs/site/media/themes/forge_soft.png b/docs/site/media/themes/forge_soft.png Binary files differnew file mode 100644 index 00000000..1b9fb2fb --- /dev/null +++ b/docs/site/media/themes/forge_soft.png diff --git a/docs/site/media/themes/harvest.png b/docs/site/media/themes/harvest.png Binary files differnew file mode 100644 index 00000000..b95e8c76 --- /dev/null +++ b/docs/site/media/themes/harvest.png diff --git a/docs/site/media/themes/helix.png b/docs/site/media/themes/helix.png Binary files differnew file mode 100644 index 00000000..6c353815 --- /dev/null +++ b/docs/site/media/themes/helix.png diff --git a/docs/site/media/themes/ink.png b/docs/site/media/themes/ink.png Binary files differnew file mode 100644 index 00000000..314610db --- /dev/null +++ b/docs/site/media/themes/ink.png diff --git a/docs/site/media/themes/kanagawabones.png b/docs/site/media/themes/kanagawabones.png Binary files differnew file mode 100644 index 00000000..c2c58ec9 --- /dev/null +++ b/docs/site/media/themes/kanagawabones.png diff --git a/docs/site/media/themes/lagoon.png b/docs/site/media/themes/lagoon.png Binary files differnew file mode 100644 index 00000000..bdd3dd49 --- /dev/null +++ b/docs/site/media/themes/lagoon.png diff --git a/docs/site/media/themes/lapis.png b/docs/site/media/themes/lapis.png Binary files differnew file mode 100644 index 00000000..2bc4024a --- /dev/null +++ b/docs/site/media/themes/lapis.png diff --git a/docs/site/media/themes/lapis_plain.png b/docs/site/media/themes/lapis_plain.png Binary files differnew file mode 100644 index 00000000..7315c2a0 --- /dev/null +++ b/docs/site/media/themes/lapis_plain.png diff --git a/docs/site/media/themes/monokai.png b/docs/site/media/themes/monokai.png Binary files differnew file mode 100644 index 00000000..4b4854b8 --- /dev/null +++ b/docs/site/media/themes/monokai.png diff --git a/docs/site/media/themes/monokai_pro.png b/docs/site/media/themes/monokai_pro.png Binary files differnew file mode 100644 index 00000000..e8036053 --- /dev/null +++ b/docs/site/media/themes/monokai_pro.png diff --git a/docs/site/media/themes/monokai_pro_classic.png b/docs/site/media/themes/monokai_pro_classic.png Binary files differnew file mode 100644 index 00000000..4e25319c --- /dev/null +++ b/docs/site/media/themes/monokai_pro_classic.png diff --git a/docs/site/media/themes/monokai_pro_light.png b/docs/site/media/themes/monokai_pro_light.png Binary files differnew file mode 100644 index 00000000..ee2f1e4c --- /dev/null +++ b/docs/site/media/themes/monokai_pro_light.png diff --git a/docs/site/media/themes/monokai_pro_light_sun.png b/docs/site/media/themes/monokai_pro_light_sun.png Binary files differnew file mode 100644 index 00000000..67e6e807 --- /dev/null +++ b/docs/site/media/themes/monokai_pro_light_sun.png diff --git a/docs/site/media/themes/monokai_pro_machine.png b/docs/site/media/themes/monokai_pro_machine.png Binary files differnew file mode 100644 index 00000000..3f683a68 --- /dev/null +++ b/docs/site/media/themes/monokai_pro_machine.png diff --git a/docs/site/media/themes/monokai_pro_octagon.png b/docs/site/media/themes/monokai_pro_octagon.png Binary files differnew file mode 100644 index 00000000..bc7a831e --- /dev/null +++ b/docs/site/media/themes/monokai_pro_octagon.png diff --git a/docs/site/media/themes/monokai_pro_ristretto.png b/docs/site/media/themes/monokai_pro_ristretto.png Binary files differnew file mode 100644 index 00000000..06429245 --- /dev/null +++ b/docs/site/media/themes/monokai_pro_ristretto.png diff --git a/docs/site/media/themes/monokai_pro_spectrum.png b/docs/site/media/themes/monokai_pro_spectrum.png Binary files differnew file mode 100644 index 00000000..c6e49f4c --- /dev/null +++ b/docs/site/media/themes/monokai_pro_spectrum.png diff --git a/docs/site/media/themes/neobones_dark.png b/docs/site/media/themes/neobones_dark.png Binary files differnew file mode 100644 index 00000000..026400de --- /dev/null +++ b/docs/site/media/themes/neobones_dark.png diff --git a/docs/site/media/themes/neobones_light.png b/docs/site/media/themes/neobones_light.png Binary files differnew file mode 100644 index 00000000..62d26b3a --- /dev/null +++ b/docs/site/media/themes/neobones_light.png diff --git a/docs/site/media/themes/nord.png b/docs/site/media/themes/nord.png Binary files differnew file mode 100644 index 00000000..d5c903b2 --- /dev/null +++ b/docs/site/media/themes/nord.png diff --git a/docs/site/media/themes/nordbones.png b/docs/site/media/themes/nordbones.png Binary files differnew file mode 100644 index 00000000..272ad19d --- /dev/null +++ b/docs/site/media/themes/nordbones.png diff --git a/docs/site/media/themes/orchard.png b/docs/site/media/themes/orchard.png Binary files differnew file mode 100644 index 00000000..623fde75 --- /dev/null +++ b/docs/site/media/themes/orchard.png diff --git a/docs/site/media/themes/orchard_black.png b/docs/site/media/themes/orchard_black.png Binary files differnew file mode 100644 index 00000000..02d78992 --- /dev/null +++ b/docs/site/media/themes/orchard_black.png diff --git a/docs/site/media/themes/paper.png b/docs/site/media/themes/paper.png Binary files differnew file mode 100644 index 00000000..59919d80 --- /dev/null +++ b/docs/site/media/themes/paper.png diff --git a/docs/site/media/themes/rose_pine.png b/docs/site/media/themes/rose_pine.png Binary files differnew file mode 100644 index 00000000..9dbf1d76 --- /dev/null +++ b/docs/site/media/themes/rose_pine.png diff --git a/docs/site/media/themes/rose_pine_dawn.png b/docs/site/media/themes/rose_pine_dawn.png Binary files differnew file mode 100644 index 00000000..8a062630 --- /dev/null +++ b/docs/site/media/themes/rose_pine_dawn.png diff --git a/docs/site/media/themes/rose_pine_moon.png b/docs/site/media/themes/rose_pine_moon.png Binary files differnew file mode 100644 index 00000000..ee93f871 --- /dev/null +++ b/docs/site/media/themes/rose_pine_moon.png diff --git a/docs/site/media/themes/rosebones_dark.png b/docs/site/media/themes/rosebones_dark.png Binary files differnew file mode 100644 index 00000000..19992fea --- /dev/null +++ b/docs/site/media/themes/rosebones_dark.png diff --git a/docs/site/media/themes/rosebones_light.png b/docs/site/media/themes/rosebones_light.png Binary files differnew file mode 100644 index 00000000..a879dc55 --- /dev/null +++ b/docs/site/media/themes/rosebones_light.png diff --git a/docs/site/media/themes/seoul256_dark_233.png b/docs/site/media/themes/seoul256_dark_233.png Binary files differnew file mode 100644 index 00000000..a757640b --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_233.png diff --git a/docs/site/media/themes/seoul256_dark_234.png b/docs/site/media/themes/seoul256_dark_234.png Binary files differnew file mode 100644 index 00000000..a34b3f2a --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_234.png diff --git a/docs/site/media/themes/seoul256_dark_235.png b/docs/site/media/themes/seoul256_dark_235.png Binary files differnew file mode 100644 index 00000000..d4c69938 --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_235.png diff --git a/docs/site/media/themes/seoul256_dark_236.png b/docs/site/media/themes/seoul256_dark_236.png Binary files differnew file mode 100644 index 00000000..8f1c48ce --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_236.png diff --git a/docs/site/media/themes/seoul256_dark_237.png b/docs/site/media/themes/seoul256_dark_237.png Binary files differnew file mode 100644 index 00000000..3816b258 --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_237.png diff --git a/docs/site/media/themes/seoul256_dark_238.png b/docs/site/media/themes/seoul256_dark_238.png Binary files differnew file mode 100644 index 00000000..9553da5f --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_238.png diff --git a/docs/site/media/themes/seoul256_dark_239.png b/docs/site/media/themes/seoul256_dark_239.png Binary files differnew file mode 100644 index 00000000..8109f756 --- /dev/null +++ b/docs/site/media/themes/seoul256_dark_239.png diff --git a/docs/site/media/themes/seoul256_light_252.png b/docs/site/media/themes/seoul256_light_252.png Binary files differnew file mode 100644 index 00000000..7f01a1ab --- /dev/null +++ b/docs/site/media/themes/seoul256_light_252.png diff --git a/docs/site/media/themes/seoul256_light_253.png b/docs/site/media/themes/seoul256_light_253.png Binary files differnew file mode 100644 index 00000000..5b9d2a43 --- /dev/null +++ b/docs/site/media/themes/seoul256_light_253.png diff --git a/docs/site/media/themes/seoul256_light_254.png b/docs/site/media/themes/seoul256_light_254.png Binary files differnew file mode 100644 index 00000000..125546f7 --- /dev/null +++ b/docs/site/media/themes/seoul256_light_254.png diff --git a/docs/site/media/themes/seoul256_light_255.png b/docs/site/media/themes/seoul256_light_255.png Binary files differnew file mode 100644 index 00000000..06b1e3fc --- /dev/null +++ b/docs/site/media/themes/seoul256_light_255.png diff --git a/docs/site/media/themes/seoul256_light_256.png b/docs/site/media/themes/seoul256_light_256.png Binary files differnew file mode 100644 index 00000000..ce4ee4da --- /dev/null +++ b/docs/site/media/themes/seoul256_light_256.png diff --git a/docs/site/media/themes/seoulbones_dark.png b/docs/site/media/themes/seoulbones_dark.png Binary files differnew file mode 100644 index 00000000..74ea8ebc --- /dev/null +++ b/docs/site/media/themes/seoulbones_dark.png diff --git a/docs/site/media/themes/seoulbones_light.png b/docs/site/media/themes/seoulbones_light.png Binary files differnew file mode 100644 index 00000000..7591721a --- /dev/null +++ b/docs/site/media/themes/seoulbones_light.png diff --git a/docs/site/media/themes/solarium.png b/docs/site/media/themes/solarium.png Binary files differnew file mode 100644 index 00000000..f24a111e --- /dev/null +++ b/docs/site/media/themes/solarium.png diff --git a/docs/site/media/themes/solarized_dark.png b/docs/site/media/themes/solarized_dark.png Binary files differnew file mode 100644 index 00000000..7df0ef41 --- /dev/null +++ b/docs/site/media/themes/solarized_dark.png diff --git a/docs/site/media/themes/solarized_light.png b/docs/site/media/themes/solarized_light.png Binary files differnew file mode 100644 index 00000000..40b88ef3 --- /dev/null +++ b/docs/site/media/themes/solarized_light.png diff --git a/docs/site/media/themes/spectrum.png b/docs/site/media/themes/spectrum.png Binary files differnew file mode 100644 index 00000000..111f0913 --- /dev/null +++ b/docs/site/media/themes/spectrum.png diff --git a/docs/site/media/themes/themes.toml b/docs/site/media/themes/themes.toml index 23df1e97..ed45b075 100644 --- a/docs/site/media/themes/themes.toml +++ b/docs/site/media/themes/themes.toml @@ -1,7 +1,6 @@ -# The Themes page gallery, in NextColor's order: media/themes/<file> for -# each. `ready = false` shows placeholder.svg under each name, so the site -# builds before the screenshots exist; set it true (or drop it) once they do. -ready = false +# The Themes page gallery, in the order the Themes builtin walks them: +# media/themes/<file> for each, made by test/record_demos.py themes. +ready = true [[theme]] name = "orchard" @@ -77,3 +76,343 @@ kind = "dark" name = "orchard_black" file = "orchard_black.png" kind = "dark" + +[[theme]] +name = "acme" +file = "acme.png" +kind = "light" + +[[theme]] +name = "lapis" +file = "lapis.png" +kind = "dark" + +[[theme]] +name = "lapis_plain" +file = "lapis_plain.png" +kind = "dark" + +[[theme]] +name = "dark_plus" +file = "dark_plus.png" +kind = "dark" + +[[theme]] +name = "solarized_dark" +file = "solarized_dark.png" +kind = "dark" + +[[theme]] +name = "solarized_light" +file = "solarized_light.png" +kind = "light" + +[[theme]] +name = "dracula" +file = "dracula.png" +kind = "dark" + +[[theme]] +name = "dracula_soft" +file = "dracula_soft.png" +kind = "dark" + +[[theme]] +name = "alucard" +file = "alucard.png" +kind = "light" + +[[theme]] +name = "monokai" +file = "monokai.png" +kind = "dark" + +[[theme]] +name = "monokai_pro" +file = "monokai_pro.png" +kind = "dark" + +[[theme]] +name = "monokai_pro_classic" +file = "monokai_pro_classic.png" +kind = "dark" + +[[theme]] +name = "monokai_pro_machine" +file = "monokai_pro_machine.png" +kind = "dark" + +[[theme]] +name = "monokai_pro_octagon" +file = "monokai_pro_octagon.png" +kind = "dark" + +[[theme]] +name = "monokai_pro_ristretto" +file = "monokai_pro_ristretto.png" +kind = "dark" + +[[theme]] +name = "monokai_pro_spectrum" +file = "monokai_pro_spectrum.png" +kind = "dark" + +[[theme]] +name = "monokai_pro_light" +file = "monokai_pro_light.png" +kind = "light" + +[[theme]] +name = "monokai_pro_light_sun" +file = "monokai_pro_light_sun.png" +kind = "light" + +[[theme]] +name = "tokyonight_night" +file = "tokyonight_night.png" +kind = "dark" + +[[theme]] +name = "tokyonight_storm" +file = "tokyonight_storm.png" +kind = "dark" + +[[theme]] +name = "tokyonight_moon" +file = "tokyonight_moon.png" +kind = "dark" + +[[theme]] +name = "tokyonight_day" +file = "tokyonight_day.png" +kind = "light" + +[[theme]] +name = "rose_pine" +file = "rose_pine.png" +kind = "dark" + +[[theme]] +name = "rose_pine_moon" +file = "rose_pine_moon.png" +kind = "dark" + +[[theme]] +name = "rose_pine_dawn" +file = "rose_pine_dawn.png" +kind = "light" + +[[theme]] +name = "catppuccin_latte" +file = "catppuccin_latte.png" +kind = "light" + +[[theme]] +name = "catppuccin_frappe" +file = "catppuccin_frappe.png" +kind = "dark" + +[[theme]] +name = "catppuccin_macchiato" +file = "catppuccin_macchiato.png" +kind = "dark" + +[[theme]] +name = "catppuccin_mocha" +file = "catppuccin_mocha.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_233" +file = "seoul256_dark_233.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_234" +file = "seoul256_dark_234.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_235" +file = "seoul256_dark_235.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_236" +file = "seoul256_dark_236.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_237" +file = "seoul256_dark_237.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_238" +file = "seoul256_dark_238.png" +kind = "dark" + +[[theme]] +name = "seoul256_dark_239" +file = "seoul256_dark_239.png" +kind = "dark" + +[[theme]] +name = "seoul256_light_252" +file = "seoul256_light_252.png" +kind = "light" + +[[theme]] +name = "seoul256_light_253" +file = "seoul256_light_253.png" +kind = "light" + +[[theme]] +name = "seoul256_light_254" +file = "seoul256_light_254.png" +kind = "light" + +[[theme]] +name = "seoul256_light_255" +file = "seoul256_light_255.png" +kind = "light" + +[[theme]] +name = "seoul256_light_256" +file = "seoul256_light_256.png" +kind = "light" + +[[theme]] +name = "zenbones_light" +file = "zenbones_light.png" +kind = "light" + +[[theme]] +name = "zenbones_dark" +file = "zenbones_dark.png" +kind = "dark" + +[[theme]] +name = "neobones_light" +file = "neobones_light.png" +kind = "light" + +[[theme]] +name = "neobones_dark" +file = "neobones_dark.png" +kind = "dark" + +[[theme]] +name = "vimbones" +file = "vimbones.png" +kind = "light" + +[[theme]] +name = "forestbones_light" +file = "forestbones_light.png" +kind = "light" + +[[theme]] +name = "forestbones_dark" +file = "forestbones_dark.png" +kind = "dark" + +[[theme]] +name = "nordbones" +file = "nordbones.png" +kind = "dark" + +[[theme]] +name = "rosebones_light" +file = "rosebones_light.png" +kind = "light" + +[[theme]] +name = "rosebones_dark" +file = "rosebones_dark.png" +kind = "dark" + +[[theme]] +name = "tokyobones_light" +file = "tokyobones_light.png" +kind = "light" + +[[theme]] +name = "tokyobones_dark" +file = "tokyobones_dark.png" +kind = "dark" + +[[theme]] +name = "seoulbones_light" +file = "seoulbones_light.png" +kind = "light" + +[[theme]] +name = "seoulbones_dark" +file = "seoulbones_dark.png" +kind = "dark" + +[[theme]] +name = "duckbones" +file = "duckbones.png" +kind = "dark" + +[[theme]] +name = "zenburned" +file = "zenburned.png" +kind = "dark" + +[[theme]] +name = "zenwritten_light" +file = "zenwritten_light.png" +kind = "light" + +[[theme]] +name = "zenwritten_dark" +file = "zenwritten_dark.png" +kind = "dark" + +[[theme]] +name = "kanagawabones" +file = "kanagawabones.png" +kind = "dark" + +[[theme]] +name = "nord" +file = "nord.png" +kind = "dark" + +[[theme]] +name = "ayu_dark" +file = "ayu_dark.png" +kind = "dark" + +[[theme]] +name = "ayu_mirage" +file = "ayu_mirage.png" +kind = "dark" + +[[theme]] +name = "ayu_light" +file = "ayu_light.png" +kind = "light" + +[[theme]] +name = "doom_one" +file = "doom_one.png" +kind = "dark" + +[[theme]] +name = "doom_one_light" +file = "doom_one_light.png" +kind = "light" + +[[theme]] +name = "helix" +file = "helix.png" +kind = "dark" + +[[theme]] +name = "dark" +file = "dark.png" +kind = "dark" diff --git a/docs/site/media/themes/tokyobones_dark.png b/docs/site/media/themes/tokyobones_dark.png Binary files differnew file mode 100644 index 00000000..f873726d --- /dev/null +++ b/docs/site/media/themes/tokyobones_dark.png diff --git a/docs/site/media/themes/tokyobones_light.png b/docs/site/media/themes/tokyobones_light.png Binary files differnew file mode 100644 index 00000000..211a30ff --- /dev/null +++ b/docs/site/media/themes/tokyobones_light.png diff --git a/docs/site/media/themes/tokyonight_day.png b/docs/site/media/themes/tokyonight_day.png Binary files differnew file mode 100644 index 00000000..cdbef103 --- /dev/null +++ b/docs/site/media/themes/tokyonight_day.png diff --git a/docs/site/media/themes/tokyonight_moon.png b/docs/site/media/themes/tokyonight_moon.png Binary files differnew file mode 100644 index 00000000..d35bf419 --- /dev/null +++ b/docs/site/media/themes/tokyonight_moon.png diff --git a/docs/site/media/themes/tokyonight_night.png b/docs/site/media/themes/tokyonight_night.png Binary files differnew file mode 100644 index 00000000..5497275b --- /dev/null +++ b/docs/site/media/themes/tokyonight_night.png diff --git a/docs/site/media/themes/tokyonight_storm.png b/docs/site/media/themes/tokyonight_storm.png Binary files differnew file mode 100644 index 00000000..5e62b9e2 --- /dev/null +++ b/docs/site/media/themes/tokyonight_storm.png diff --git a/docs/site/media/themes/vimbones.png b/docs/site/media/themes/vimbones.png Binary files differnew file mode 100644 index 00000000..134fd582 --- /dev/null +++ b/docs/site/media/themes/vimbones.png diff --git a/docs/site/media/themes/zenbones_dark.png b/docs/site/media/themes/zenbones_dark.png Binary files differnew file mode 100644 index 00000000..d7e8315c --- /dev/null +++ b/docs/site/media/themes/zenbones_dark.png diff --git a/docs/site/media/themes/zenbones_light.png b/docs/site/media/themes/zenbones_light.png Binary files differnew file mode 100644 index 00000000..22c2da48 --- /dev/null +++ b/docs/site/media/themes/zenbones_light.png diff --git a/docs/site/media/themes/zenburned.png b/docs/site/media/themes/zenburned.png Binary files differnew file mode 100644 index 00000000..3b97815b --- /dev/null +++ b/docs/site/media/themes/zenburned.png diff --git a/docs/site/media/themes/zenwritten_dark.png b/docs/site/media/themes/zenwritten_dark.png Binary files differnew file mode 100644 index 00000000..6421245f --- /dev/null +++ b/docs/site/media/themes/zenwritten_dark.png diff --git a/docs/site/media/themes/zenwritten_light.png b/docs/site/media/themes/zenwritten_light.png Binary files differnew file mode 100644 index 00000000..28f3a144 --- /dev/null +++ b/docs/site/media/themes/zenwritten_light.png diff --git a/docs/site/media/wait-editor.mp4 b/docs/site/media/wait-editor.mp4 Binary files differnew file mode 100644 index 00000000..49adadd6 --- /dev/null +++ b/docs/site/media/wait-editor.mp4 diff --git a/docs/site/media/wait-editor.png b/docs/site/media/wait-editor.png Binary files differnew file mode 100644 index 00000000..1d029f4c --- /dev/null +++ b/docs/site/media/wait-editor.png diff --git a/docs/site/media/wait-editor.webm b/docs/site/media/wait-editor.webm Binary files differnew file mode 100644 index 00000000..5afda502 --- /dev/null +++ b/docs/site/media/wait-editor.webm diff --git a/docs/site/media/where-commands-run.mp4 b/docs/site/media/where-commands-run.mp4 Binary files differnew file mode 100644 index 00000000..c4bd83fe --- /dev/null +++ b/docs/site/media/where-commands-run.mp4 diff --git a/docs/site/media/where-commands-run.png b/docs/site/media/where-commands-run.png Binary files differnew file mode 100644 index 00000000..5af438cc --- /dev/null +++ b/docs/site/media/where-commands-run.png diff --git a/docs/site/media/where-commands-run.webm b/docs/site/media/where-commands-run.webm Binary files differnew file mode 100644 index 00000000..c9d35176 --- /dev/null +++ b/docs/site/media/where-commands-run.webm diff --git a/docs/site/site.css b/docs/site/site.css index bab762d0..a0959d5e 100644 --- a/docs/site/site.css +++ b/docs/site/site.css @@ -63,12 +63,13 @@ body { margin:0; min-height:100vh; background:var(--field) radial-gradient(color /* code: a window on the machine, titled in stripes */ .content code, .content pre, .content kbd, .tag { font-family:var(--mono); } .content code { font-size:.82em; overflow-wrap:break-word; hyphens:none; } -.content pre { +.content pre:not(.ap-term-text) { font-size:15px; line-height:1.45; padding:12px 14px; margin:1em 0; overflow-x:auto; background:var(--deep); border:2px solid var(--leaf); border-top-width:8px; box-shadow:5px 5px 0 var(--shadow); } .content pre code { font-size:inherit; overflow-wrap:normal; } -@media (prefers-color-scheme: dark) { .content pre span { color:inherit !important; } } +/* Typst's code highlighting only: the cast player's terminal is a <pre> of coloured spans too */ +@media (prefers-color-scheme: dark) { .content pre:not(.ap-term-text) span { color:inherit !important; } } .content pre.tutor { font-size:14px; } /* tables: rows on alternating tints, a pardes #pairs */ @@ -81,8 +82,13 @@ body { margin:0; min-height:100vh; background:var(--field) radial-gradient(color /* --- the semantic elements (docs/typ/style.typ) ------------------------------ */ .key { display:inline-block; padding:0 .3em; border-radius:4px; background:color-mix(in srgb, var(--leaf) 20%, transparent); color:var(--ink); font-size:.82em; white-space:nowrap; line-height:1.4; } .key .plus, .key .then { color:var(--leaf); opacity:.8; padding:0 .12em; } -.word { background:var(--tag); padding:0 .25em; color:var(--dim); } -.word code { font-size:.82em; color:var(--ink); } +/* a builtin or tag word: a chip to click, on the tag's ground over a rule + (Look and Exec in acme's look green and exec red) */ +:root { --look:#7fd07f; --exec:#ff8a7a; } +@media (prefers-color-scheme: light) { :root { --look:#006600; --exec:#aa0000; } } +.content code.word { font-size:.82em; color:var(--ink); background:var(--tag); padding:.05em .3em; border-radius:2px; border-bottom:2px solid var(--leaf); white-space:nowrap; } +.content code.word.look { border-bottom-color:var(--look); } +.content code.word.exec { border-bottom-color:var(--exec); } .addr code { color:var(--plum); } .file code { color:var(--leaf); } .btn, .chord { display:inline-flex; align-items:center; gap:2px; vertical-align:-.38em; margin-block:-.3em; } @@ -126,7 +132,6 @@ body { margin:0; min-height:100vh; background:var(--field) radial-gradient(color .glossary { margin:1.4em 0; } .glossary summary { cursor:pointer; list-style-position:inside; } .glossary summary h3, .glossary summary p { display:inline; margin:0; } -.glossary summary .count { font:20px var(--pixel); color:var(--dim); margin-left:.4em; } .vh { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; } .colophon { font:15px var(--pixel); color:var(--dim); text-align:center; } .colophon a { color:var(--leaf); } @@ -144,8 +149,8 @@ body { margin:0; min-height:100vh; background:var(--field) radial-gradient(color @media (max-width:600px) { .cmd pre { white-space:pre-wrap; overflow-wrap:anywhere; } } /* terminal recordings: the first across the page, the rest two by two */ -.casts { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap:18px; margin:1em 0 1.4em; } -.casts .first { grid-column:1 / -1; } +/* one per row at the page's full width: a terminal at half width is unreadable */ +.casts { display:grid; grid-template-columns:minmax(0, 1fr); gap:22px; margin:1em 0 1.4em; } .cast .player { background:#121314; } .cast figcaption strong { color:var(--leaf); } .content h2.shelf { font-size:26px; margin:1.2em 0 .4em; } @@ -157,3 +162,63 @@ body { margin:0; min-height:100vh; background:var(--field) radial-gradient(color .shot figcaption { padding:3px 8px; font:16px var(--pixel); color:var(--dim); border-top:2px solid var(--leaf); } .shot.light figcaption::after { content:" · light"; color:var(--amber); } .shot .pending { aspect-ratio:960/700; display:flex; align-items:center; justify-content:center; font:15px var(--pixel); color:var(--dim); } + +/* a builtin's chip that links to its glossary entry */ +.content a:has(> code.word) { text-decoration:none; } +.content a:hover > code.word { text-decoration:underline; text-underline-offset:3px; } +.credit { font-size:18px; color:var(--dim); margin:0 0 .3em; } +/* the glossary: each entry's name is a small heading over its line */ +main[data-page="builtins"] .content h4 { font:600 18px var(--mono); color:var(--leaf); margin:1.1em 0 .1em; } +main[data-page="builtins"] .content h4 + p { margin-top:0; } +.content pre.tutor .btn, .content pre.tutor .chord { vertical-align:-.3em; } +.all-words { line-height:2.1; } + +/* the virtual filesystem as a tree: names and connectors, descriptions + in a quiet column; on a phone a description wraps under its name */ +.content pre.fstree { font-size:15px; line-height:1.35; overflow-x:visible; } +.fstree .row { display:grid; grid-template-columns:var(--name) 1fr; align-items:baseline; } +.fstree .nl { display:none; } +.fstree .branch { color:var(--rule); } +.fstree .dir, .fstree .dir a { color:var(--leaf); font-weight:700; } +.fstree a { color:var(--amber); text-decoration:none; } +.fstree a:hover { text-decoration:underline; } +.fstree .desc { color:var(--dim); font-family:var(--hand); font-size:17px; white-space:normal; line-height:1.3; } +@media (max-width:600px) { + .content pre.fstree { font-size:13px; } + .fstree .row { display:block; } + .fstree .name { display:block; } + /* under the name: its prefix is --cols cells of the 13px mono font */ + .fstree .desc { display:block; padding-left:calc(var(--cols) * 7.8px); font-size:15px; margin-bottom:.15em; } +} + +/* what's in it: a row of linked chips under the lead */ +.inside { display:flex; flex-wrap:wrap; gap:8px 10px; margin:.2em 0 1.1em; padding:0; list-style:none; } +.inside a { display:inline-block; padding:2px 10px; font:17px var(--pixel); color:var(--leaf); background:var(--tag); border:2px solid var(--leaf); text-decoration:none; } +.inside a:hover { color:var(--amber); border-color:var(--amber); } + +/* a screenshot with numbered pins, their labels listed beside it */ +.annotated { margin:1.2em 0 1.6em; display:grid; grid-template-columns:minmax(0, 3fr) minmax(12em, 2fr); gap:14px 22px; align-items:center; } +.annotated .frame { position:relative; border:2px solid var(--leaf); box-shadow:5px 5px 0 var(--shadow); } +.annotated img { display:block; width:100%; height:auto; } +.annotated .pin { position:absolute; transform:translate(-50%, -50%); width:1.5em; height:1.5em; border-radius:50%; + display:flex; align-items:center; justify-content:center; font:700 14px var(--mono); background:var(--amber); color:#1b120a; box-shadow:0 0 0 2px var(--panel); } +.annotated .pins { margin:0; padding-left:1.8em; font-size:18px; } +.annotated .pins li { margin:.25em 0; } +.annotated .pins li::marker { font:700 15px var(--mono); color:var(--amber); } +@media (max-width:600px) { .annotated { grid-template-columns:minmax(0, 1fr); } } +.clip figcaption .more { font:15px var(--pixel); color:var(--leaf); margin-left:.3em; white-space:nowrap; } +.clip { scroll-margin-top:16px; } + +/* a pane's box: blank normal, ^ insert, $ raw; filled while unsaved */ +.mode-box { display:inline-flex; align-items:center; justify-content:center; width:1.15em; height:1.15em; vertical-align:-.15em; + font:700 .8em var(--mono); background:var(--tag); color:var(--ink); border:2px solid var(--leaf); border-radius:2px; } +.mode-box.unsaved { background:var(--amber); border-color:var(--amber); color:#1b120a; } +/* a recording inside a chapter */ +.content .clip.inline { margin:1.2em 0; max-width:640px; } +.clip.inline video { display:block; width:100%; height:auto; background:var(--deep); } +.content .clip.inline.wide { max-width:none; } +.glossary dl { margin:.6em 0 0; display:grid; grid-template-columns:minmax(8em, max-content) 1fr; } +.glossary dt, .glossary dd { margin:0; padding:5px 9px; } +.glossary dt { font-weight:600; color:var(--leaf); } +.glossary dt:nth-of-type(odd), .glossary dt:nth-of-type(odd) + dd { background:color-mix(in srgb, var(--tag) 70%, transparent); } +@media (max-width:600px) { .glossary dl { grid-template-columns:1fr; } .glossary dd { padding-top:0; } } diff --git a/docs/site/site.typ b/docs/site/site.typ index afcd1041..47903d6e 100644 --- a/docs/site/site.typ +++ b/docs/site/site.typ @@ -4,7 +4,7 @@ // typst compile --root . --format bundle --features bundle,html docs/site/site.typ OUT // Every link is relative and every page sits at the top of OUT, so the site // works from file:// and from any static server. -#import "../typ/style.typ": chapters, tutor-path, doc-links, project +#import "../typ/style.typ": chapters, tutor-path, doc-links, project, btn, chord #let clips = toml("media/clips.toml").clip #let casts = toml("casts/casts.toml").cast @@ -19,11 +19,25 @@ // Change the landing here; the rest of the site is the chapters. #let landing = ( lead: [pardes is a text environment, after acme and helix, where any text - is live: right-click looks at it (opens the file at that line, the URL, - or finds the word) and middle-click runs it (a builtin or a shell - command). Read PDFs and source, edit code and use terminals with it, in - a terminal or in its own window.], + is live: right-click `main.c:12` to open that line, middle-click `make` + to run it, in source, PDFs and terminals alike, in a terminal or in its + own window.], + credit: [It is built on ideas from #link("https://9p.io/plan9/")[Plan 9] from + Bell Labs: #link("https://9p.io/sys/doc/acme/acme.html")[acme]'s text as + the interface, and the 9P protocol.], status: [Linux; macOS in progress. Version #version.], + // what's in it: a word each, linked to where it is told; no prose + // what's in it: each word jumps to its recording on this page when it + // has one, and that recording's caption links on to the docs + inside: ( + (name: "Terminals", rec: "terminals", docs: "guide.html#terminals"), + (name: "PDFs", rec: "pdf-navigation", docs: "builtins.html#builtin-PdfSections"), + (name: "Images", rec: "image-pane", docs: "reference.html#panes"), + (name: "Language servers", rec: none, docs: "setup.html#language-servers"), + (name: "Diff review", rec: "diff-review", docs: "guide.html#reviewing-diffs"), + (name: "Scripting", rec: "scripting-over-9p", docs: "scripting.html"), + (name: "Themes", rec: none, docs: "themes.html"), + ), terminal: [In a terminal], window: [In its own window], start: ( @@ -84,6 +98,20 @@ ] ] +#let in-view-script = el("script")[#( + "(() => { if (!('IntersectionObserver' in window)) return; +" + + " const p = el => el.player || (el.tagName === 'VIDEO' ? el : null); +" + + " const io = new IntersectionObserver(es => { for (const e of es) { const r = p(e.target); if (!r) continue; +" + + " if (e.isIntersecting) Promise.resolve(r.play()).catch(() => {}); else r.pause(); } }, {threshold: 0.25}); +" + + " for (const el of document.querySelectorAll('.clip video, .cast .player')) io.observe(el); +" + + "})();" +)] + #let shell(id, title, body) = html.html(lang: "en", { html.head({ html.meta(charset: "utf-8") @@ -101,12 +129,16 @@ #el("footer", (class: "colophon"))[ pardes #version · source: #project.mirrors.map(m => el("a", (href: m.web))[#m.name]).join(", ") · + #el("a", (href: project.changes))[changes] · #if project.license != none [#project.license license · ] built from `docs/typ` with Typst · #el("a", (href: "fonts/LICENSE-DepartureMono.txt"))[fonts] (OFL) · #el("a", (href: "player/LICENSE-asciinema-player.txt"))[asciinema-player] (Apache-2.0) ] ] + // after the page's own scripts (the landing's players), on every page + // that has a recording + in-view-script }) }) @@ -126,34 +158,55 @@ #doc-links.update(true) -#let video(c) = el("video", (poster: "media/" + c.name + ".png", muted: "", loop: "", playsinline: "", - controls: "", preload: "none"))[ +// Every recording plays by itself; the script below plays each only while +// it is on screen. Without the script, `autoplay` still plays them. +#let video(c) = el("video", (poster: "media/" + c.name + ".png", autoplay: "", muted: "", loop: "", playsinline: "", + controls: ""))[ #el("source", (src: "media/" + c.name + ".webm", type: "video/webm"))[] #el("source", (src: "media/" + c.name + ".mp4", type: "video/mp4"))[] ] #let placeholder = el("img", (src: "media/placeholder.svg", alt: "", width: "640", height: "400"))[] +/// A recording's caption: its text (which may hold #link markup), then the +/// docs of the "What's in it" word that jumps here, if any. +#let caption(c) = { + if c.caption.contains("#") { eval(c.caption, mode: "markup") } else { c.caption } + let to = landing.inside.find(i => i.rec == c.name) + if to != none [ #el("a", (class: "more", href: to.docs))[#to.name in the docs →]] +} + /// A terminal recording: a box the player fills, its data inline (so it -/// plays from file://), its caption under it. The first ready one plays. +/// plays from file://), its caption under it. #let ready-casts = casts.filter(c => c.ready) -#let cast(c, i) = el("figure", (class: if i == 0 { "clip cast first" } else { "clip cast" }))[ +#let cast(c, i) = el("figure", (class: if i == 0 { "clip cast first" } else { "clip cast" }, id: "rec-" + c.name))[ #if c.ready { el("div", (class: "player", id: "cast-" + c.name, "aria-label": c.title))[] } else { placeholder } - #el("figcaption")[#el("strong")[#c.title.] #c.caption] + #el("figcaption")[#el("strong")[#c.title.] #caption(c)] ] #let player-script = { let list = ready-casts.enumerate().map(((i, c)) => ( id: "cast-" + c.name, data: read("casts/" + c.name + ".cast"), - cols: c.cols, rows: c.rows, autoPlay: i == 0, + cols: c.cols, rows: c.rows, poster: "npt:0:" + str(c.at("poster_at", default: 2)), )) // "</" may not appear inside a script element let data = json.encode(list, pretty: false).replace("</", "<\\/") el("script", (src: "player/asciinema-player.min.js"))[] - el("script")[#("for (const c of " + data + ") AsciinemaPlayer.create({data: c.data}, document.getElementById(c.id), {cols: c.cols, rows: c.rows, autoPlay: c.autoPlay, loop: true, fit: 'width'});")] + el("script")[#("for (const c of " + data + ") { const el = document.getElementById(c.id); el.player = AsciinemaPlayer.create({data: c.data}, el, {cols: c.cols, rows: c.rows, autoPlay: false, loop: true, fit: 'width', poster: c.poster}); }")] } +/// Plays a recording while it is on screen and pauses it once it leaves. +/// The casts wait for it (autoPlay off) so each shows its poster frame +/// until then; the videos autoplay by themselves too. + #document(href("index"), title: "pardes", shell("index", "pardes")[ #el("h1", (class: "masthead"))[pardes] #el("p", (class: "lead"))[#landing.lead] + #el("ul", (class: "inside", "aria-label": "What's in it"))[ + #for i in landing.inside { + let to = if i.rec != none { "#rec-" + i.rec } else { i.docs } + el("li")[#el("a", (href: to, title: if i.rec != none { "watch it here; the docs: " + i.docs } else { "the docs" }))[#i.name]] + } + ] + #el("p", (class: "credit"))[#landing.credit] #el("p", (class: "runs"))[#landing.status] #el("div", (class: "start"))[ #for s in landing.start { @@ -169,10 +222,10 @@ #el("div", (class: "casts"))[#for (i, c) in casts.enumerate() { cast(c, i) }] #el("h2", (class: "shelf"))[#landing.window] #el("div", (class: "clips"))[ - #for c in clips { - el("figure", (class: "clip"))[ + #for c in clips.filter(c => c.at("landing", default: true)) { + el("figure", (class: "clip", id: "rec-" + c.name))[ #if c.ready { video(c) } else { placeholder } - #el("figcaption")[#c.caption] + #el("figcaption")[#caption(c)] ] } ] @@ -197,8 +250,38 @@ ]) } +/// The tutor's text with its mouse buttons drawn: B1, B2, B3 and the +/// chords it writes 1-2 (hold 1, click 2) become the docs' mouse glyphs, +/// each with its hidden words, inside the preformatted block. +#let tutor-text(t) = { + // the guide's sections by title, for "-> Guide: Modes, Config" + let guide-sections = (:) + for m in read("../typ/guide.typ").matches(regex("(?m)^= (.+?) <([a-z0-9-]+)>$")) { + guide-sections.insert(m.captures.at(0), m.captures.at(1)) + } + let tokens = regex("\\bB([123])\\b|\\b([123])-([123])\\b|docs/typ/([a-z]+)\\.typ|(?m)(?:^ -> Guide: )(.+)$|https://[^\\s)]+") + let at = 0 + for m in t.matches(tokens) { + t.slice(at, m.start) + let (b, c1, c2, page, sections) = m.captures + if b != none { btn("B" + b) } + else if c1 != none { chord("B" + c1, "B" + c2) } + else if page != none { link(page + ".html", m.text) } + else if sections != none { + " -> Guide: " + sections.split(", ").map(name => { + let l = guide-sections.at(name, default: none) + if l != none { link("guide.html#" + l, name) } else { name } + }).join(", ") + } + else { link(m.text, m.text) } + at = m.end + } + t.slice(at) +} + #document(href("tutor"), title: "The tutor", shell("tutor", "The tutor")[ #heading(level: 1)[The tutor] <tutor> The tutor as the editor shows it (#raw("Tutor"), or #raw("SPC h t")). - #el("pre", (class: "tutor"))[#read(tutor-path)] + #el("pre", (class: "tutor"))[#tutor-text(read(tutor-path))] ]) diff --git a/docs/typ/README b/docs/typ/README index 522d99ff..9d3913c0 100644 --- a/docs/typ/README +++ b/docs/typ/README @@ -35,14 +35,16 @@ Build (from the repo root): The contract for content files ------------------------------ Start a content file with - #import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs + #import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs, fstree, annotated, mode-box (a content file does not import page setup; the same file goes into the book, the HTML and, for the cheatsheet, the A4 page) and use plain markup (= headings, - lists, `raw`, *strong*) plus these. Never set page, fonts, colours or spacing in a content file; ask for a new function instead. - word(w) a builtin or tag word, drawn as it sits in a tag. + word(w) a builtin or tag word, drawn as a chip on the tag's + ground; a builtin links to its entry in the Builtins + chapter wherever that chapter is in the same output. #word("Save") #word("Tty+bash") key(k) one press, or a sequence of presses separated by spaces, drawn as one pill (Ctrl + w, g › g). @@ -68,12 +70,49 @@ new function instead. config keys detached, mapped in `topics`). A link in the book and the HTML; on the A4 sheet, its name. #doc("building", section: "listeners") + fstree(spec) a directory tree drawn as `tree` draws one, from a raw + block: two spaces of indent per level, the name (a + directory ends in /), two or more spaces, a one-line + description, an optional @label of the section that + documents it (a link where that section is in the + same output). reference.typ's tree is checked against + the files the session serves. + #fstree(``` + index a line per pane @rules + pane/ + new open: a new pane @panes + ```) + annotated(src, size, alt:, ..pins) + a screenshot with numbered pins, their labels as text + beside it. src from the repository root, size in + pixels, each pin ([label], x, y) in its pixels. + #annotated("/docs/site/media/themes/orchard.png", (640, 513), + alt: "a pardes window", ([the box], 8, 58)) + mode-box(mark, unsaved:) + a pane's box as it looks: " " normal, "^" insert, + "$" raw; unsaved: true fills it. + #mode-box("^") #mode-box(" ", unsaved: true) + theme-gallery() every theme as a picture, on the site's Themes page; + nothing on paper. pairs(split:, ..cells) a two-column table, a thing and its meaning, rows on alternating tints; split: 2 sets it as two tables side by side on paper. Cells alternate left, right. #pairs(key("u"), [undo], keys("i", "a"), [insert]) +Builtins +-------- +builtins-tty.json and builtins-gui.json are every builtin of the terminal +and the window build (name, leader, Help's other shortcuts, arg, scope, +setting, choices, doc), written by `zig build builtins-json -Dplatform=tty` +and `-Dplatform=gui` from the registry and the Help rows +(src/builtins_json.zig). style.typ merges them, marking each word "both", +"tty" or "gui". The doc steps refresh their build's file first, and each +build's unit-test fails when its file is stale. #word takes a name from +either file. builtins.typ draws it as the +glossary; `everyday`, `internals` and `builtin-groups` in style.typ say +in what order. + The drift test -------------- The unit test "docs/typ names only words, keys and default tags that diff --git a/docs/typ/book.typ b/docs/typ/book.typ index 7223ea1d..b2245372 100644 --- a/docs/typ/book.typ +++ b/docs/typ/book.typ @@ -30,6 +30,10 @@ text(size: 34pt, weight: "bold", fill: palette.tag-name)[pardes] v(4mm) text(size: 13pt, style: "italic", fill: palette.tag-fg, tagline) + v(10mm) + text(size: 11pt, fill: palette.ink)[Built on ideas from #link("https://9p.io/plan9/")[Plan 9] from Bell + Labs: #link("https://9p.io/sys/doc/acme/acme.html")[acme]'s text as the interface, and the 9P + protocol.] v(2fr) }) diff --git a/docs/typ/builtins-gui.json b/docs/typ/builtins-gui.json new file mode 100644 index 00000000..b42f9c72 --- /dev/null +++ b/docs/typ/builtins-gui.json @@ -0,0 +1,144 @@ +[ + {"name": "Ascii", "leader": "SPC t a", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "add the printable ASCII bitmaps to the matcher's glyph set"}, + {"name": "Attach", "leader": "SPC s a", "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Attach this terminal to a detached pardes session by name."}, + {"name": "Back", "leader": "SPC j o", "also": ["C-o"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Ctrl-o: one step back into the history."}, + {"name": "Bloom", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off, 0-3", "doc": "The brightest ink glows a little: a level, 0 (off) through 3."}, + {"name": "BootShell", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "keep, replace", "doc": "A document dropped where a lone untouched shell stands: keep the shell, or replace it."}, + {"name": "Callees", "leader": "SPC l C", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the functions the function under the cursor calls."}, + {"name": "Callers", "leader": "SPC l c", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the callers of the function under the cursor."}, + {"name": "Changelog", "leader": "SPC h c", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "This build's version and what changed to reach it, printed into an output buffer the same way Config prints the live settings."}, + {"name": "ChipShadow", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "In a terminal, a notice chip casts a cell's shadow right and down, on or off."}, + {"name": "ClipPaste", "leader": "SPC p", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Paste the system clipboard after the selection."}, + {"name": "ClipPasteBefore", "leader": "SPC P", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Paste the system clipboard before the selection."}, + {"name": "ClipReplace", "leader": "SPC R", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Replace the selection with the system clipboard."}, + {"name": "ClipYank", "leader": "SPC y", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Copy the selection to the system clipboard."}, + {"name": "ClipYankMain", "leader": "SPC Y", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "helix `<space>Y`: the PRIMARY selection alone, where `SPC y` joins every cursor's."}, + {"name": "CodeAction", "leader": "SPC l a", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the language server's code actions for the cursor."}, + {"name": "Collapse", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Fold a pane to its tag, or restore its share of the column."}, + {"name": "Colors", "leader": "SPC t c", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Syntax colours in text panes, on or off."}, + {"name": "Config", "leader": "SPC f c", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the startup file, `init`, in a pane: its pane when it is open, else the file, else a pane of that name for Save to make it and its directory."}, + {"name": "Crt", "leader": "SPC t r", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off, 0-3", "doc": "The bundled CRT post pass over the window, on or off."}, + {"name": "CursorBlink", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "The cursor blinks, solid while typing, on or off."}, + {"name": "Debug", "leader": "SPC t d", "also": ["topbar"], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A small box of frame statistics at the top right, on or off."}, + {"name": "Del", "leader": "SPC d", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Close the pane."}, + {"name": "DelAbove", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Close the pane, giving its rows to the pane above it."}, + {"name": "DelBelow", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Close the pane, giving its rows to the pane below it."}, + {"name": "Delcol", "leader": "SPC c d", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Close this column and its panes, refusing once over unsaved text."}, + {"name": "Detach", "leader": "SPC s D", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Detach this pardes from its terminal, leaving the session running."}, + {"name": "Diagnostics", "leader": "SPC l d", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the file's diagnostics from the language server."}, + {"name": "DirLook", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "pane, terminal", "doc": "A directory looked at: pane, a pane listing it as acme's directory window, or terminal, ls in a terminal there."}, + {"name": "Down", "leader": "SPC w j", "also": ["C-w j", "C-w down"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane below, off a tag onto the pane under it."}, + {"name": "Dump", "leader": "SPC s d", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Write the session's panes and layout to a dump file, for Restore."}, + {"name": "DumpConfig", "leader": null, "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the settings in effect, each a word to click, and the startup file's path."}, + {"name": "DumpDir", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The directory Dump writes to and a relative Restore reads from; bare, the default."}, + {"name": "DumpThemes", "leader": null, "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Write the bundled themes into the config directory's themes, to edit."}, + {"name": "Edit", "leader": null, "also": [], "arg": true, "scope": "both", "setting": false, "choices": null, "doc": "acme's Edit: sam's command language over the open text panes, from a tag, a pane ctl or exec, starting in the pane's body."}, + {"name": "EffectCode", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Open the source of a panel transition or post shader, by name."}, + {"name": "Exec", "leader": null, "also": ["tab", "middle-click"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Execute its argument as a middle click on it would, a builtin or a shell command."}, + {"name": "Exit", "leader": "SPC q", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Quit the editor, refusing once while a pane holds unsaved text: an Exit with nothing edited since discards it."}, + {"name": "Filter", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Recolour a terminal's program colours to the theme, or show them as sent, flipping between them."}, + {"name": "Find", "leader": "SPC f f", "also": ["topbar"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "List the files below this pane's directory whose names hold its argument, in a +Search."}, + {"name": "FocusTint", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "The focused pane's and column's tags are tinted, on or off."}, + {"name": "Font", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The body font, by name or path, and its size."}, + {"name": "Fonts", "leader": "SPC t f", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the fonts in a pane, each a word to click."}, + {"name": "Forward", "leader": "SPC j i", "also": ["C-i"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Ctrl-i: one step forward again, up to wherever Back started."}, + {"name": "Get", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "acme's Get: the pane's file read again, its unsaved edits refused once as Del refuses them."}, + {"name": "Grain", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off, 0-3", "doc": "The page takes a fine, still grain, like paper: a level, 0 (off) through 3."}, + {"name": "Grep", "leader": "SPC f g", "also": ["topbar"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Find's sibling: Find matches file NAMES under this pane's directory, Grep matches file CONTENTS under every pane's directory at once."}, + {"name": "GripWidth", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The grip and scrollbar width, as a percent of the theme's rail."}, + {"name": "Help", "leader": "SPC ?", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the help: every key and every builtin."}, + {"name": "Hover", "leader": "SPC l k", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Ask the language server about the symbol under the cursor."}, + {"name": "HoverGlow", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A soft underline of light under the word a look-hover would open, on or off."}, + {"name": "InactiveDim", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "Fade the unfocused panes' text by a percentage, 0 through 100, 0 off."}, + {"name": "Incl", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "acme's Incl, for the session: `Incl dir ...` adds directories a look at a name found nowhere else is tried in (`stdio.h`, `<foo.h>`), bare lists them, `Incl -` empties the list."}, + {"name": "Joincol", "leader": "SPC c j", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Fold the active pane's column into the one on its right, keeping its panes."}, + {"name": "JumpScope", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "file, all", "doc": "What Back and Forward keep to: file, the focused pane's file until it runs out that way, or all, every place in order."}, + {"name": "JumpTrail", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "In a terminal, a jump of the cursor leaves a short trail that fades, on or off."}, + {"name": "Jumplist", "leader": "SPC j l", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the places jumped from, each a place to go."}, + {"name": "Kill", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "acme's Kill: stop the commands pardes started -- the lines it typed into a terminal, from an exec, a middle click or a pty/run, while their shell says they run (C mark to D)."}, + {"name": "Last", "leader": "SPC j j", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Go back to the last place jumped from in another pane."}, + {"name": "Left", "leader": "SPC w h", "also": ["C-w h", "C-w left"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane, or column tag, to the left."}, + {"name": "Lift", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off, shadow, rim, auto", "doc": "How the focused pane stands off the page: off, shadow, rim or auto."}, + {"name": "Ligatures", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A font's programming ligatures draw across their cells, on or off."}, + {"name": "LocationsConfig", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Set how location rows are drawn, or show how they are when bare."}, + {"name": "Look", "leader": null, "also": ["enter", "right-click"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Look at its argument: open the file or address it names, else find the word, as a right click does."}, + {"name": "LookWord", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "search, list", "doc": "A plain word looked at: search selects its next place in the pane, list lists every place in a +Search."}, + {"name": "Lspinfo", "leader": "SPC l i", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Show which language servers serve this file and their state."}, + {"name": "Lspwhy", "leader": "SPC l w", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Explain how the last language server request was answered, step by step."}, + {"name": "MessageAnimation", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A message falls into its row and dissolves out of it, on or off."}, + {"name": "MessageDissolve", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "How long, in milliseconds, a message takes to dissolve."}, + {"name": "MessageFall", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "How long, in milliseconds, a message takes to fall into its row."}, + {"name": "MessageLinger", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "How long, in milliseconds, a message stays after what dismisses it."}, + {"name": "Messages", "leader": "SPC h m", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the messages shown so far."}, + {"name": "Mini", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Open a minimap of the file in braille dots."}, + {"name": "Mode", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Cycle the pane's input modes: terminals add raw tty mode to normal/insert."}, + {"name": "Motion", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "off, crisp, smooth, bouncy, playful", "doc": "How animations move: off, crisp, smooth, bouncy or playful."}, + {"name": "Mount", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Mount another pardes's 9P tree under /n/<name>, given its dial address."}, + {"name": "Msg", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Show its argument on this pane's message row."}, + {"name": "New", "leader": "SPC f n", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Open an empty scratch pane, <dir>/+New, in this pane's directory."}, + {"name": "Newcol", "leader": "SPC c n", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "An empty column right of the keyboard's, its tag taking the keyboard."}, + {"name": "NextColor", "leader": "SPC t n", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Switch to the next bundled theme."}, + {"name": "Occlusion", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Pane bodies darken faintly toward their edges, on or off."}, + {"name": "Pager", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "pardes, off", "doc": "What a terminal's commands page through: pardes, a +Pager pane (pardes -), or off, the environment's own; for terminals started after it."}, + {"name": "PagerColor", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A +Pager keeps its program's colours, on or off; for the next text paged."}, + {"name": "Palette", "leader": "SPC t l", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "the C64 palette or the terminal's own 16"}, + {"name": "PanelAscii", "leader": "SPC a a", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close through a scatter of ASCII, on or off."}, + {"name": "PanelCurtain", "leader": "SPC a c", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close like a curtain, on or off."}, + {"name": "PanelDissolve", "leader": "SPC a d", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes dissolve in and out as they open and close, on or off."}, + {"name": "PanelEdges", "leader": "SPC a e", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close from their edges, on or off."}, + {"name": "PanelFall", "leader": "SPC a f", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes fall into place as they open, on or off."}, + {"name": "PanelScramble", "leader": "SPC a r", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close through scrambled text, on or off."}, + {"name": "PanelSlide", "leader": "SPC a s", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes slide in and out as they open and close, on or off."}, + {"name": "PanelType", "leader": "SPC a t", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes type themselves in as they open, on or off."}, + {"name": "PanelVertical", "leader": "SPC a v", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close with a vertical wipe, on or off."}, + {"name": "PanelWave", "leader": "SPC a w", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close in a wave, on or off."}, + {"name": "PanelZoom", "leader": "SPC a z", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes zoom in and out as they open and close, on or off."}, + {"name": "Parallax", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A theme's page pattern moves with the text at a quarter of its speed, on or off."}, + {"name": "PdfFit", "leader": "SPC t z", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Fit the PDF page to the pane by width or by height, flipping between them (or to the one named, `width|height`)."}, + {"name": "PdfSections", "leader": "SPC t s", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the PDF's sections in a pane, each a place to go."}, + {"name": "PdfTint", "leader": "SPC t i", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Tint the PDF page to the theme, or show it as printed, stepping through them (or to the one named, `disabled|filtered|full`)."}, + {"name": "Pet", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "An optional SDL workspace-tag companion; never consumes input or text cells."}, + {"name": "Petscii", "leader": "SPC t p", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "glyph art over the host's pixels: an image pane's picture, or the kitty graphics a terminal's program placed (yazi's previews)"}, + {"name": "Placement", "leader": "SPC c p", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "acme, pardes", "doc": "Where a new pane goes: acme, as makenewwindow does, or pardes, the older rules."}, + {"name": "Putall", "leader": null, "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "acme's Putall: every pane holding unsaved edits to a file is saved, each as its own Save; one that is refused (changed on disk since, a write that fails) says so and the rest are saved all the same."}, + {"name": "Recent", "leader": "SPC f r", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the files opened lately, closed ones too, each a place to open again."}, + {"name": "Redo", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Redo the last undone edit."}, + {"name": "Rename", "leader": "SPC l r", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Rename the symbol under the cursor everywhere, to its argument."}, + {"name": "Repl", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Binds this terminal as a language's REPL, so an exec on that language's files is typed into it instead of run."}, + {"name": "Restore", "leader": "SPC s r", "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Replace every pane with those of a dump file, the last one Dump wrote when bare."}, + {"name": "Right", "leader": "SPC w l", "also": ["C-w l", "C-w right"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane, or column tag, to the right."}, + {"name": "Save", "leader": "SPC f s", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Write the pane's text to its file, or to the file its argument names."}, + {"name": "SelectRefs", "leader": "SPC l h", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Select every reference to the symbol under the cursor."}, + {"name": "SelectionGlow", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A soft halo of the selection's colour round it in the body, on or off."}, + {"name": "Shader", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "A Shadertoy file into the post chain, or out of it, compiled again when saved; off empties the chain."}, + {"name": "ShaderAnimation", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "off, on, always", "doc": "When the post chain animates on its own: off, on (while focused) or always."}, + {"name": "Shell", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The shell new terminals run; bare, $SHELL if it is executable, else /bin/sh."}, + {"name": "Subtypes", "leader": "SPC l T", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the subtypes of the type under the cursor."}, + {"name": "Supertypes", "leader": "SPC l t", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the supertypes of the type under the cursor."}, + {"name": "Symbols", "leader": "SPC l s", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the file's symbols from the language server."}, + {"name": "SyntaxBold", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Keywords and the like are drawn bold, on or off."}, + {"name": "Tab", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "A tab's width in cells, 1 through 16, in every pane; bare, it says the width."}, + {"name": "Tagbottom", "leader": "SPC t b", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Each pane's tag goes at its foot rather than its head, on or off."}, + {"name": "TaglineSize", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "Scale the tag font, a percentage."}, + {"name": "TermImages", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "real, petscii", "doc": "How a new terminal draws its program's kitty graphics: real, as pixels where it can, or petscii, as glyph art."}, + {"name": "Theme", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "Switch to the named theme."}, + {"name": "ThemeFile", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Load a theme from a file."}, + {"name": "Themes", "leader": "SPC t t", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the themes in a pane, each a word to click."}, + {"name": "ThumbFlash", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "In a terminal, a pane's scroll thumb brightens as it scrolls and fades back, on or off."}, + {"name": "Togglettymode", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Switch this terminal between raw program input and normal editor mode."}, + {"name": "TreeContext", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Show the declarations enclosing the top row at the pane's head, on or off."}, + {"name": "TreeContextTagStyle", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A pane's TreeContext rows draw in the tag's style, on or off."}, + {"name": "Tty", "leader": "SPC n t", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "A shell in the calling pane's directory, raw from the first frame."}, + {"name": "Tty9p", "leader": "SPC n 9", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "A Linux terminal with the current session mounted through kernel v9fs."}, + {"name": "Tutor", "leader": "SPC h t", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the tutor, a document to work through."}, + {"name": "Undo", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "acme's Undo and Redo: step the pane's body back or forward through its edits, from a tag, a pane ctl or exec."}, + {"name": "Unmount", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Unmount the 9P tree mounted under /n/<name>."}, + {"name": "Up", "leader": "SPC w k", "also": ["C-w k", "C-w up"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane above, and from a column's top pane to its tag."}, + {"name": "Verbose", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A builtin says its own name on the message row as it runs, on or off."}, + {"name": "Vignette", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off, 0-3", "doc": "The window's corners fall into shade: a level, 0 (off) through 3."}, + {"name": "WindowOpacity", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The window's opacity, a percentage."}, + {"name": "Wrap", "leader": "SPC t w", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Long lines wrap onto the next row, on or off."}, + {"name": "WsDiagnostics", "leader": "SPC l D", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the workspace's diagnostics from the language server."}, + {"name": "WsSymbols", "leader": "SPC l S", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Search the workspace's symbols for its argument."}, + {"name": "Zerox", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "acme's Zerox: a second pane on this pane's file, the same text, undo and unsaved state, with a scroll and a cursor of its own (File.zerox)."} +] diff --git a/docs/typ/builtins-tty.json b/docs/typ/builtins-tty.json new file mode 100644 index 00000000..53bcf033 --- /dev/null +++ b/docs/typ/builtins-tty.json @@ -0,0 +1,125 @@ +[ + {"name": "Ascii", "leader": "SPC t a", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "add the printable ASCII bitmaps to the matcher's glyph set"}, + {"name": "Attach", "leader": "SPC s a", "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Attach this terminal to a detached pardes session by name."}, + {"name": "Back", "leader": "SPC j o", "also": ["C-o"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Ctrl-o: one step back into the history."}, + {"name": "BootShell", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "keep, replace", "doc": "A document dropped where a lone untouched shell stands: keep the shell, or replace it."}, + {"name": "Callees", "leader": "SPC l C", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the functions the function under the cursor calls."}, + {"name": "Callers", "leader": "SPC l c", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the callers of the function under the cursor."}, + {"name": "Changelog", "leader": "SPC h c", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "This build's version and what changed to reach it, printed into an output buffer the same way Config prints the live settings."}, + {"name": "ChipShadow", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "In a terminal, a notice chip casts a cell's shadow right and down, on or off."}, + {"name": "ClipPaste", "leader": "SPC p", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Paste the system clipboard after the selection."}, + {"name": "ClipPasteBefore", "leader": "SPC P", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Paste the system clipboard before the selection."}, + {"name": "ClipReplace", "leader": "SPC R", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Replace the selection with the system clipboard."}, + {"name": "ClipYank", "leader": "SPC y", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Copy the selection to the system clipboard."}, + {"name": "ClipYankMain", "leader": "SPC Y", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "helix `<space>Y`: the PRIMARY selection alone, where `SPC y` joins every cursor's."}, + {"name": "CodeAction", "leader": "SPC l a", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the language server's code actions for the cursor."}, + {"name": "Collapse", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Fold a pane to its tag, or restore its share of the column."}, + {"name": "Colors", "leader": "SPC t c", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Syntax colours in text panes, on or off."}, + {"name": "Config", "leader": "SPC f c", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the startup file, `init`, in a pane: its pane when it is open, else the file, else a pane of that name for Save to make it and its directory."}, + {"name": "Debug", "leader": "SPC t d", "also": ["topbar"], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A small box of frame statistics at the top right, on or off."}, + {"name": "Del", "leader": "SPC d", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Close the pane."}, + {"name": "DelAbove", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Close the pane, giving its rows to the pane above it."}, + {"name": "DelBelow", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Close the pane, giving its rows to the pane below it."}, + {"name": "Delcol", "leader": "SPC c d", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Close this column and its panes, refusing once over unsaved text."}, + {"name": "Detach", "leader": "SPC s D", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Detach this pardes from its terminal, leaving the session running."}, + {"name": "Diagnostics", "leader": "SPC l d", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the file's diagnostics from the language server."}, + {"name": "DirLook", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "pane, terminal", "doc": "A directory looked at: pane, a pane listing it as acme's directory window, or terminal, ls in a terminal there."}, + {"name": "Down", "leader": "SPC w j", "also": ["C-w j", "C-w down"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane below, off a tag onto the pane under it."}, + {"name": "Dump", "leader": "SPC s d", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Write the session's panes and layout to a dump file, for Restore."}, + {"name": "DumpConfig", "leader": null, "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the settings in effect, each a word to click, and the startup file's path."}, + {"name": "DumpDir", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The directory Dump writes to and a relative Restore reads from; bare, the default."}, + {"name": "DumpThemes", "leader": null, "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Write the bundled themes into the config directory's themes, to edit."}, + {"name": "Edit", "leader": null, "also": [], "arg": true, "scope": "both", "setting": false, "choices": null, "doc": "acme's Edit: sam's command language over the open text panes, from a tag, a pane ctl or exec, starting in the pane's body."}, + {"name": "EffectCode", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Open the source of a panel transition or post shader, by name."}, + {"name": "Exec", "leader": null, "also": ["tab", "middle-click"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Execute its argument as a middle click on it would, a builtin or a shell command."}, + {"name": "Exit", "leader": "SPC q", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Quit the editor, refusing once while a pane holds unsaved text: an Exit with nothing edited since discards it."}, + {"name": "Filter", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Recolour a terminal's program colours to the theme, or show them as sent, flipping between them."}, + {"name": "Find", "leader": "SPC f f", "also": ["topbar"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "List the files below this pane's directory whose names hold its argument, in a +Search."}, + {"name": "FocusTint", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "The focused pane's and column's tags are tinted, on or off."}, + {"name": "Forward", "leader": "SPC j i", "also": ["C-i"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Ctrl-i: one step forward again, up to wherever Back started."}, + {"name": "Get", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "acme's Get: the pane's file read again, its unsaved edits refused once as Del refuses them."}, + {"name": "Grep", "leader": "SPC f g", "also": ["topbar"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Find's sibling: Find matches file NAMES under this pane's directory, Grep matches file CONTENTS under every pane's directory at once."}, + {"name": "Help", "leader": "SPC ?", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the help: every key and every builtin."}, + {"name": "Hover", "leader": "SPC l k", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Ask the language server about the symbol under the cursor."}, + {"name": "InactiveDim", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "Fade the unfocused panes' text by a percentage, 0 through 100, 0 off."}, + {"name": "Incl", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "acme's Incl, for the session: `Incl dir ...` adds directories a look at a name found nowhere else is tried in (`stdio.h`, `<foo.h>`), bare lists them, `Incl -` empties the list."}, + {"name": "Joincol", "leader": "SPC c j", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Fold the active pane's column into the one on its right, keeping its panes."}, + {"name": "JumpScope", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "file, all", "doc": "What Back and Forward keep to: file, the focused pane's file until it runs out that way, or all, every place in order."}, + {"name": "JumpTrail", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "In a terminal, a jump of the cursor leaves a short trail that fades, on or off."}, + {"name": "Jumplist", "leader": "SPC j l", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the places jumped from, each a place to go."}, + {"name": "Kill", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "acme's Kill: stop the commands pardes started -- the lines it typed into a terminal, from an exec, a middle click or a pty/run, while their shell says they run (C mark to D)."}, + {"name": "Last", "leader": "SPC j j", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Go back to the last place jumped from in another pane."}, + {"name": "Left", "leader": "SPC w h", "also": ["C-w h", "C-w left"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane, or column tag, to the left."}, + {"name": "LocationsConfig", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Set how location rows are drawn, or show how they are when bare."}, + {"name": "Look", "leader": null, "also": ["enter", "right-click"], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Look at its argument: open the file or address it names, else find the word, as a right click does."}, + {"name": "LookWord", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "search, list", "doc": "A plain word looked at: search selects its next place in the pane, list lists every place in a +Search."}, + {"name": "Lspinfo", "leader": "SPC l i", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Show which language servers serve this file and their state."}, + {"name": "Lspwhy", "leader": "SPC l w", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Explain how the last language server request was answered, step by step."}, + {"name": "MessageAnimation", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A message falls into its row and dissolves out of it, on or off."}, + {"name": "MessageDissolve", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "How long, in milliseconds, a message takes to dissolve."}, + {"name": "MessageFall", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "How long, in milliseconds, a message takes to fall into its row."}, + {"name": "MessageLinger", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "How long, in milliseconds, a message stays after what dismisses it."}, + {"name": "Messages", "leader": "SPC h m", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the messages shown so far."}, + {"name": "Mini", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Open a minimap of the file in braille dots."}, + {"name": "Mode", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Cycle the pane's input modes: terminals add raw tty mode to normal/insert."}, + {"name": "Motion", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "off, crisp, smooth, bouncy, playful", "doc": "How animations move: off, crisp, smooth, bouncy or playful."}, + {"name": "Mount", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Mount another pardes's 9P tree under /n/<name>, given its dial address."}, + {"name": "Msg", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Show its argument on this pane's message row."}, + {"name": "New", "leader": "SPC f n", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Open an empty scratch pane, <dir>/+New, in this pane's directory."}, + {"name": "Newcol", "leader": "SPC c n", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "An empty column right of the keyboard's, its tag taking the keyboard."}, + {"name": "NextColor", "leader": "SPC t n", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Switch to the next bundled theme."}, + {"name": "Pager", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "pardes, off", "doc": "What a terminal's commands page through: pardes, a +Pager pane (pardes -), or off, the environment's own; for terminals started after it."}, + {"name": "PagerColor", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A +Pager keeps its program's colours, on or off; for the next text paged."}, + {"name": "Palette", "leader": "SPC t l", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "the C64 palette or the terminal's own 16"}, + {"name": "PanelAscii", "leader": "SPC a a", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close through a scatter of ASCII, on or off."}, + {"name": "PanelCurtain", "leader": "SPC a c", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close like a curtain, on or off."}, + {"name": "PanelDissolve", "leader": "SPC a d", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes dissolve in and out as they open and close, on or off."}, + {"name": "PanelEdges", "leader": "SPC a e", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close from their edges, on or off."}, + {"name": "PanelFall", "leader": "SPC a f", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes fall into place as they open, on or off."}, + {"name": "PanelScramble", "leader": "SPC a r", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close through scrambled text, on or off."}, + {"name": "PanelSlide", "leader": "SPC a s", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes slide in and out as they open and close, on or off."}, + {"name": "PanelType", "leader": "SPC a t", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes type themselves in as they open, on or off."}, + {"name": "PanelVertical", "leader": "SPC a v", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close with a vertical wipe, on or off."}, + {"name": "PanelWave", "leader": "SPC a w", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes open and close in a wave, on or off."}, + {"name": "PanelZoom", "leader": "SPC a z", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Panes zoom in and out as they open and close, on or off."}, + {"name": "PdfFit", "leader": "SPC t z", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Fit the PDF page to the pane by width or by height, flipping between them (or to the one named, `width|height`)."}, + {"name": "PdfSections", "leader": "SPC t s", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the PDF's sections in a pane, each a place to go."}, + {"name": "PdfTint", "leader": "SPC t i", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Tint the PDF page to the theme, or show it as printed, stepping through them (or to the one named, `disabled|filtered|full`)."}, + {"name": "Petscii", "leader": "SPC t p", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "glyph art over the host's pixels: an image pane's picture, or the kitty graphics a terminal's program placed (yazi's previews)"}, + {"name": "Placement", "leader": "SPC c p", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "acme, pardes", "doc": "Where a new pane goes: acme, as makenewwindow does, or pardes, the older rules."}, + {"name": "Putall", "leader": null, "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "acme's Putall: every pane holding unsaved edits to a file is saved, each as its own Save; one that is refused (changed on disk since, a write that fails) says so and the rest are saved all the same."}, + {"name": "Recent", "leader": "SPC f r", "also": [], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the files opened lately, closed ones too, each a place to open again."}, + {"name": "Redo", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Redo the last undone edit."}, + {"name": "Rename", "leader": "SPC l r", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Rename the symbol under the cursor everywhere, to its argument."}, + {"name": "Repl", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Binds this terminal as a language's REPL, so an exec on that language's files is typed into it instead of run."}, + {"name": "Restore", "leader": "SPC s r", "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Replace every pane with those of a dump file, the last one Dump wrote when bare."}, + {"name": "Right", "leader": "SPC w l", "also": ["C-w l", "C-w right"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane, or column tag, to the right."}, + {"name": "Save", "leader": "SPC f s", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Write the pane's text to its file, or to the file its argument names."}, + {"name": "SelectRefs", "leader": "SPC l h", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Select every reference to the symbol under the cursor."}, + {"name": "Shell", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "The shell new terminals run; bare, $SHELL if it is executable, else /bin/sh."}, + {"name": "Subtypes", "leader": "SPC l T", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the subtypes of the type under the cursor."}, + {"name": "Supertypes", "leader": "SPC l t", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the supertypes of the type under the cursor."}, + {"name": "Symbols", "leader": "SPC l s", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the file's symbols from the language server."}, + {"name": "SyntaxBold", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Keywords and the like are drawn bold, on or off."}, + {"name": "Tab", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "A tab's width in cells, 1 through 16, in every pane; bare, it says the width."}, + {"name": "Tagbottom", "leader": "SPC t b", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Each pane's tag goes at its foot rather than its head, on or off."}, + {"name": "TermImages", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "real, petscii", "doc": "How a new terminal draws its program's kitty graphics: real, as pixels where it can, or petscii, as glyph art."}, + {"name": "Theme", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": null, "doc": "Switch to the named theme."}, + {"name": "ThemeFile", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Load a theme from a file."}, + {"name": "Themes", "leader": "SPC t t", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "List the themes in a pane, each a word to click."}, + {"name": "ThumbFlash", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "In a terminal, a pane's scroll thumb brightens as it scrolls and fades back, on or off."}, + {"name": "Togglettymode", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Switch this terminal between raw program input and normal editor mode."}, + {"name": "TreeContext", "leader": null, "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Show the declarations enclosing the top row at the pane's head, on or off."}, + {"name": "TreeContextTagStyle", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A pane's TreeContext rows draw in the tag's style, on or off."}, + {"name": "Tty", "leader": "SPC n t", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "A shell in the calling pane's directory, raw from the first frame."}, + {"name": "Tty9p", "leader": "SPC n 9", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "A Linux terminal with the current session mounted through kernel v9fs."}, + {"name": "Tutor", "leader": "SPC h t", "also": ["topbar"], "arg": false, "scope": "root", "setting": false, "choices": null, "doc": "Open the tutor, a document to work through."}, + {"name": "Undo", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "acme's Undo and Redo: step the pane's body back or forward through its edits, from a tag, a pane ctl or exec."}, + {"name": "Unmount", "leader": null, "also": [], "arg": true, "scope": "root", "setting": false, "choices": null, "doc": "Unmount the 9P tree mounted under /n/<name>."}, + {"name": "Up", "leader": "SPC w k", "also": ["C-w k", "C-w up"], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "Move the keyboard to the pane above, and from a column's top pane to its tag."}, + {"name": "Verbose", "leader": null, "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "A builtin says its own name on the message row as it runs, on or off."}, + {"name": "Wrap", "leader": "SPC t w", "also": [], "arg": true, "scope": "root", "setting": true, "choices": "on, off", "doc": "Long lines wrap onto the next row, on or off."}, + {"name": "WsDiagnostics", "leader": "SPC l D", "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "List the workspace's diagnostics from the language server."}, + {"name": "WsSymbols", "leader": "SPC l S", "also": [], "arg": true, "scope": "pane", "setting": false, "choices": null, "doc": "Search the workspace's symbols for its argument."}, + {"name": "Zerox", "leader": null, "also": [], "arg": false, "scope": "pane", "setting": false, "choices": null, "doc": "acme's Zerox: a second pane on this pane's file, the same text, undo and unsaved state, with a scroll and a cursor of its own (File.zerox)."} +] diff --git a/docs/typ/builtins.typ b/docs/typ/builtins.typ new file mode 100644 index 00000000..8375d5de --- /dev/null +++ b/docs/typ/builtins.typ @@ -0,0 +1,12 @@ +// Every builtin: the words you click in a tag (Exec runs them) or type as +// commands. The entries come from docs/typ/builtins-tty.json and +// builtins-gui.json, which +// `zig build builtins-json` writes from the registry and the Help rows, +// so this chapter and Help cannot drift. +#import "style.typ": builtin-glossary, word + +These are the words you click in a tag (#word("Exec") runs them) or type +as a command, a line at a time. The everyday ones come first; the rest by +what they are for. + +#builtin-glossary() diff --git a/docs/typ/cheatsheet-a4.pdf b/docs/typ/cheatsheet-a4.pdf index b8cebf62..575b57b8 100644 --- a/docs/typ/cheatsheet-a4.pdf +++ b/docs/typ/cheatsheet-a4.pdf @@ -2,70 +2,70 @@ %���� 1 0 obj -<</Type/Pages/Count 1/Kids[387 0 R]>> +<</Type/Pages/Count 1/Kids[417 0 R]>> endobj 2 0 obj -<</Parent 3 0 R/Title(Chords: hold the first, click the next)/Dest 351 0 R>> +<</Parent 3 0 R/Title(Chords: hold the first, click the next)/Dest 381 0 R>> endobj 3 0 obj -<</Parent 16 0 R/Next 4 0 R/First 2 0 R/Last 2 0 R/Count -1/Title(The mouse)/Dest 352 0 R>> +<</Parent 16 0 R/Next 4 0 R/First 2 0 R/Last 2 0 R/Count -1/Title(The mouse)/Dest 382 0 R>> endobj 4 0 obj -<</Parent 16 0 R/Next 5 0 R/Prev 3 0 R/Title(Tags)/Dest 353 0 R>> +<</Parent 16 0 R/Next 5 0 R/Prev 3 0 R/Title(Tags)/Dest 383 0 R>> endobj 5 0 obj -<</Parent 16 0 R/Next 6 0 R/Prev 4 0 R/Title( addresses)/Dest 354 0 R>> +<</Parent 16 0 R/Next 6 0 R/Prev 4 0 R/Title( addresses)/Dest 384 0 R>> endobj 6 0 obj -<</Parent 16 0 R/Next 7 0 R/Prev 5 0 R/Title(Keys: normal mode)/Dest 355 0 R>> +<</Parent 16 0 R/Next 7 0 R/Prev 5 0 R/Title(Keys: normal mode)/Dest 385 0 R>> endobj 7 0 obj -<</Parent 16 0 R/Next 8 0 R/Prev 6 0 R/Title(Keys: panes)/Dest 356 0 R>> +<</Parent 16 0 R/Next 8 0 R/Prev 6 0 R/Title(Keys: panes)/Dest 386 0 R>> endobj 8 0 obj -<</Parent 16 0 R/Next 9 0 R/Prev 7 0 R/Title(The leader: in normal mode)/Dest 357 0 R>> +<</Parent 16 0 R/Next 9 0 R/Prev 7 0 R/Title(The leader: in normal mode)/Dest 387 0 R>> endobj 9 0 obj -<</Parent 16 0 R/Next 10 0 R/Prev 8 0 R/Title(Terminals and commands)/Dest 358 0 R>> +<</Parent 16 0 R/Next 10 0 R/Prev 8 0 R/Title(Terminals and commands)/Dest 388 0 R>> endobj 10 0 obj -<</Parent 16 0 R/Next 11 0 R/Prev 9 0 R/Title(Reviewing diffs)/Dest 359 0 R>> +<</Parent 16 0 R/Next 11 0 R/Prev 9 0 R/Title(Reviewing diffs)/Dest 389 0 R>> endobj 11 0 obj -<</Parent 16 0 R/Next 12 0 R/Prev 10 0 R/Title(Finding things)/Dest 360 0 R>> +<</Parent 16 0 R/Next 12 0 R/Prev 10 0 R/Title(Finding things)/Dest 390 0 R>> endobj 12 0 obj -<</Parent 16 0 R/Next 13 0 R/Prev 11 0 R/Title(Sessions)/Dest 361 0 R>> +<</Parent 16 0 R/Next 13 0 R/Prev 11 0 R/Title(Sessions)/Dest 391 0 R>> endobj 13 0 obj -<</Parent 16 0 R/Next 14 0 R/Prev 12 0 R/Title(Config)/Dest 362 0 R>> +<</Parent 16 0 R/Next 14 0 R/Prev 12 0 R/Title(Config)/Dest 392 0 R>> endobj 14 0 obj -<</Parent 16 0 R/Next 15 0 R/Prev 13 0 R/Title(Themes)/Dest 363 0 R>> +<</Parent 16 0 R/Next 15 0 R/Prev 13 0 R/Title(Themes)/Dest 393 0 R>> endobj 15 0 obj -<</Parent 16 0 R/Prev 14 0 R/Title(The virtual filesystem (9P))/Dest 364 0 R>> +<</Parent 16 0 R/Prev 14 0 R/Title(The virtual filesystem (9P))/Dest 394 0 R>> endobj 16 0 obj <</Type/Outlines/First 3 0 R/Last 15 0 R/Count 13>> endobj 17 0 obj -<</Type/StructTreeRoot/RoleMap<</Datetime/Span/Terms/Part/Title/P/Strong/Span/Em/Span>>/K[349 0 R]/ParentTree<</Nums[0 18 0 R]>>/ParentTreeNextKey 1>> +<</Type/StructTreeRoot/RoleMap<</Datetime/Span/Terms/Part/Title/P/Strong/Span/Em/Span>>/K[378 0 R]/ParentTree<</Nums[0 104 0 R 1 18 0 R]>>/ParentTreeNextKey 2>> endobj 18 0 obj -[19 0 R 19 0 R 20 0 R 22 0 R 22 0 R 25 0 R 25 0 R 25 0 R 28 0 R 28 0 R 28 0 R 28 0 R 28 0 R 28 0 R 30 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 33 0 R 34 0 R 34 0 R 34 0 R 34 0 R 37 0 R 38 0 R 39 0 R 39 0 R 41 0 R 42 0 R 44 0 R 44 0 R 45 0 R 45 0 R 45 0 R 47 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 50 0 R 51 0 R 51 0 R 51 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 55 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 57 0 R 59 0 R 59 0 R 59 0 R 59 0 R 59 0 R 58 0 R 59 0 R 61 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 65 0 R 65 0 R 66 0 R 66 0 R 66 0 R 66 0 R 67 0 R 68 0 R 70 0 R 71 0 R 73 0 R 75 0 R 75 0 R 74 0 R 75 0 R 77 0 R 80 0 R 80 0 R 78 0 R 80 0 R 79 0 R 80 0 R 82 0 R 84 0 R 84 0 R 84 0 R 84 0 R 84 0 R 83 0 R 86 0 R 87 0 R 87 0 R 89 0 R 91 0 R 90 0 R 91 0 R 91 0 R 99 0 R 94 0 R 99 0 R 95 0 R 99 0 R 96 0 R 99 0 R 97 0 R 99 0 R 98 0 R 99 0 R 99 0 R 99 0 R 100 0 R 104 0 R 101 0 R 104 0 R 104 0 R 102 0 R 104 0 R 103 0 R 104 0 R 104 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 105 0 R 106 0 R 108 0 R 108 0 R 108 0 R 108 0 R 108 0 R 108 0 R 109 0 R 111 0 R 111 0 R 111 0 R 111 0 R 111 0 R 111 0 R 111 0 R 112 0 R 112 0 R 114 0 R 114 0 R 114 0 R 115 0 R 117 0 R 118 0 R 120 0 R 120 0 R 120 0 R 121 0 R 123 0 R 123 0 R 123 0 R 124 0 R 126 0 R 126 0 R 127 0 R 129 0 R 129 0 R 129 0 R 129 0 R 129 0 R 129 0 R 130 0 R 130 0 R 130 0 R 132 0 R 132 0 R 133 0 R 133 0 R 135 0 R 135 0 R 136 0 R 136 0 R 138 0 R 138 0 R 138 0 R 139 0 R 141 0 R 141 0 R 141 0 R 141 0 R 141 0 R 141 0 R 142 0 R 142 0 R 144 0 R 145 0 R 145 0 R 147 0 R 147 0 R 147 0 R 147 0 R 147 0 R 147 0 R 148 0 R 148 0 R 150 0 R 150 0 R 150 0 R 150 0 R 150 0 R 150 0 R 151 0 R 153 0 R 153 0 R 154 0 R 154 0 R 154 0 R 154 0 R 154 0 R 154 0 R 154 0 R 156 0 R 157 0 R 160 0 R 161 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 164 0 R 164 0 R 164 0 R 163 0 R 164 0 R 166 0 R 167 0 R 167 0 R 167 0 R 167 0 R 169 0 R 169 0 R 169 0 R 170 0 R 170 0 R 170 0 R 170 0 R 170 0 R 172 0 R 172 0 R 172 0 R 172 0 R 172 0 R 172 0 R 173 0 R 173 0 R 175 0 R 175 0 R 175 0 R 176 0 R 178 0 R 178 0 R 178 0 R 179 0 R 179 0 R 182 0 R 182 0 R 182 0 R 183 0 R 183 0 R 183 0 R 184 0 R 186 0 R 186 0 R 186 0 R 186 0 R 186 0 R 187 0 R 189 0 R 189 0 R 189 0 R 189 0 R 189 0 R 190 0 R 192 0 R 192 0 R 192 0 R 192 0 R 192 0 R 193 0 R 195 0 R 195 0 R 195 0 R 195 0 R 195 0 R 196 0 R 198 0 R 198 0 R 198 0 R 198 0 R 198 0 R 199 0 R 201 0 R 201 0 R 201 0 R 201 0 R 201 0 R 202 0 R 204 0 R 204 0 R 204 0 R 205 0 R 207 0 R 207 0 R 207 0 R 207 0 R 207 0 R 208 0 R 210 0 R 210 0 R 210 0 R 210 0 R 210 0 R 211 0 R 213 0 R 213 0 R 213 0 R 213 0 R 213 0 R 214 0 R 216 0 R 216 0 R 216 0 R 216 0 R 216 0 R 217 0 R 219 0 R 219 0 R 219 0 R 219 0 R 219 0 R 220 0 R 222 0 R 222 0 R 222 0 R 223 0 R 227 0 R 227 0 R 227 0 R 228 0 R 230 0 R 230 0 R 230 0 R 230 0 R 230 0 R 231 0 R 233 0 R 233 0 R 233 0 R 233 0 R 233 0 R 234 0 R 236 0 R 236 0 R 236 0 R 236 0 R 236 0 R 237 0 R 239 0 R 239 0 R 239 0 R 239 0 R 239 0 R 240 0 R 242 0 R 242 0 R 242 0 R 242 0 R 242 0 R 243 0 R 245 0 R 245 0 R 245 0 R 245 0 R 245 0 R 246 0 R 248 0 R 248 0 R 248 0 R 248 0 R 248 0 R 249 0 R 251 0 R 251 0 R 251 0 R 251 0 R 251 0 R 252 0 R 254 0 R 254 0 R 254 0 R 254 0 R 254 0 R 255 0 R 257 0 R 257 0 R 257 0 R 257 0 R 257 0 R 258 0 R 260 0 R 260 0 R 260 0 R 260 0 R 260 0 R 261 0 R 263 0 R 263 0 R 263 0 R 264 0 R 269 0 R 270 0 R 272 0 R 272 0 R 272 0 R 272 0 R 271 0 R 272 0 R 272 0 R 272 0 R 272 0 R 272 0 R 272 0 R 272 0 R 272 0 R 274 0 R 276 0 R 275 0 R 275 0 R 276 0 R 277 0 R 277 0 R 277 0 R 279 0 R 283 0 R 283 0 R 280 0 R 283 0 R 283 0 R 283 0 R 283 0 R 283 0 R 281 0 R 283 0 R 282 0 R 283 0 R 286 0 R 287 0 R 291 0 R 291 0 R 288 0 R 291 0 R 291 0 R 289 0 R 291 0 R 290 0 R 291 0 R 291 0 R 291 0 R 292 0 R 293 0 R 297 0 R 297 0 R 294 0 R 297 0 R 297 0 R 297 0 R 295 0 R 297 0 R 296 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 300 0 R 301 0 R 304 0 R 302 0 R 304 0 R 304 0 R 304 0 R 303 0 R 304 0 R 304 0 R 304 0 R 304 0 R 304 0 R 305 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 306 0 R 308 0 R 308 0 R 308 0 R 308 0 R 307 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 309 0 R 312 0 R 312 0 R 312 0 R 312 0 R 310 0 R 312 0 R 312 0 R 312 0 R 312 0 R 312 0 R 311 0 R 312 0 R 312 0 R 313 0 R 317 0 R 314 0 R 317 0 R 315 0 R 317 0 R 317 0 R 316 0 R 317 0 R 317 0 R 318 0 R 318 0 R 318 0 R 319 0 R 320 0 R 320 0 R 322 0 R 323 0 R 323 0 R 325 0 R 327 0 R 326 0 R 327 0 R 327 0 R 329 0 R 330 0 R 332 0 R 334 0 R 333 0 R 334 0 R 334 0 R 336 0 R 338 0 R 338 0 R 338 0 R 338 0 R 338 0 R 337 0 R 340 0 R 342 0 R 341 0 R 342 0 R 345 0 R 345 0 R 345 0 R 345 0 R 345 0 R 345 0 R 345 0 R 346 0 R 348 0 R 347 0 R 347 0 R 348 0 R 348 0 R] +[19 0 R 19 0 R 20 0 R 22 0 R 22 0 R 25 0 R 25 0 R 25 0 R 28 0 R 28 0 R 28 0 R 28 0 R 28 0 R 28 0 R 30 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 31 0 R 33 0 R 34 0 R 34 0 R 34 0 R 34 0 R 37 0 R 38 0 R 39 0 R 39 0 R 41 0 R 42 0 R 44 0 R 44 0 R 45 0 R 45 0 R 45 0 R 47 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 48 0 R 50 0 R 51 0 R 51 0 R 51 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 54 0 R 55 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 56 0 R 57 0 R 59 0 R 59 0 R 59 0 R 59 0 R 59 0 R 58 0 R 59 0 R 61 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 62 0 R 65 0 R 65 0 R 66 0 R 66 0 R 66 0 R 66 0 R 67 0 R 68 0 R 70 0 R 71 0 R 73 0 R 75 0 R 75 0 R 74 0 R 75 0 R 77 0 R 80 0 R 80 0 R 78 0 R 80 0 R 79 0 R 80 0 R 82 0 R 84 0 R 84 0 R 84 0 R 84 0 R 84 0 R 83 0 R 86 0 R 87 0 R 87 0 R 89 0 R 91 0 R 90 0 R 91 0 R 91 0 R 99 0 R 94 0 R 99 0 R 95 0 R 99 0 R 96 0 R 99 0 R 97 0 R 99 0 R 98 0 R 99 0 R 99 0 R 99 0 R 100 0 R 105 0 R 101 0 R 105 0 R 105 0 R 102 0 R 105 0 R 103 0 R 105 0 R 105 0 R 104 0 R 105 0 R 106 0 R 106 0 R 106 0 R 106 0 R 106 0 R 106 0 R 106 0 R 106 0 R 107 0 R 109 0 R 109 0 R 109 0 R 109 0 R 109 0 R 109 0 R 110 0 R 112 0 R 112 0 R 112 0 R 112 0 R 112 0 R 112 0 R 112 0 R 113 0 R 113 0 R 115 0 R 115 0 R 115 0 R 116 0 R 118 0 R 119 0 R 121 0 R 121 0 R 121 0 R 122 0 R 124 0 R 124 0 R 124 0 R 125 0 R 127 0 R 127 0 R 128 0 R 130 0 R 130 0 R 130 0 R 130 0 R 130 0 R 130 0 R 131 0 R 131 0 R 131 0 R 133 0 R 133 0 R 134 0 R 134 0 R 136 0 R 136 0 R 137 0 R 137 0 R 139 0 R 139 0 R 139 0 R 140 0 R 142 0 R 142 0 R 142 0 R 142 0 R 142 0 R 142 0 R 143 0 R 143 0 R 145 0 R 146 0 R 146 0 R 148 0 R 148 0 R 148 0 R 148 0 R 148 0 R 148 0 R 149 0 R 149 0 R 151 0 R 151 0 R 151 0 R 151 0 R 151 0 R 151 0 R 152 0 R 154 0 R 154 0 R 155 0 R 155 0 R 155 0 R 155 0 R 155 0 R 155 0 R 155 0 R 157 0 R 158 0 R 161 0 R 162 0 R 163 0 R 163 0 R 163 0 R 163 0 R 163 0 R 163 0 R 163 0 R 163 0 R 165 0 R 165 0 R 165 0 R 164 0 R 165 0 R 167 0 R 168 0 R 168 0 R 168 0 R 168 0 R 170 0 R 170 0 R 170 0 R 171 0 R 171 0 R 171 0 R 171 0 R 171 0 R 173 0 R 173 0 R 173 0 R 173 0 R 173 0 R 173 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 174 0 R 176 0 R 176 0 R 176 0 R 177 0 R 179 0 R 179 0 R 179 0 R 180 0 R 180 0 R 183 0 R 183 0 R 183 0 R 184 0 R 184 0 R 184 0 R 185 0 R 185 0 R 185 0 R 185 0 R 187 0 R 187 0 R 187 0 R 187 0 R 187 0 R 188 0 R 190 0 R 190 0 R 190 0 R 190 0 R 190 0 R 191 0 R 193 0 R 193 0 R 193 0 R 193 0 R 193 0 R 194 0 R 196 0 R 196 0 R 196 0 R 196 0 R 196 0 R 197 0 R 199 0 R 199 0 R 199 0 R 199 0 R 199 0 R 200 0 R 202 0 R 202 0 R 202 0 R 202 0 R 202 0 R 203 0 R 205 0 R 205 0 R 205 0 R 206 0 R 208 0 R 208 0 R 208 0 R 208 0 R 208 0 R 209 0 R 211 0 R 211 0 R 211 0 R 211 0 R 211 0 R 212 0 R 214 0 R 214 0 R 214 0 R 214 0 R 214 0 R 215 0 R 217 0 R 217 0 R 217 0 R 217 0 R 217 0 R 218 0 R 220 0 R 220 0 R 220 0 R 220 0 R 220 0 R 221 0 R 223 0 R 223 0 R 223 0 R 224 0 R 228 0 R 228 0 R 228 0 R 229 0 R 231 0 R 231 0 R 231 0 R 231 0 R 231 0 R 232 0 R 234 0 R 234 0 R 234 0 R 234 0 R 234 0 R 235 0 R 237 0 R 237 0 R 237 0 R 237 0 R 237 0 R 238 0 R 240 0 R 240 0 R 240 0 R 240 0 R 240 0 R 241 0 R 243 0 R 243 0 R 243 0 R 243 0 R 243 0 R 244 0 R 246 0 R 246 0 R 246 0 R 246 0 R 246 0 R 247 0 R 249 0 R 249 0 R 249 0 R 249 0 R 249 0 R 250 0 R 252 0 R 252 0 R 252 0 R 252 0 R 252 0 R 253 0 R 255 0 R 255 0 R 255 0 R 255 0 R 255 0 R 256 0 R 258 0 R 258 0 R 258 0 R 258 0 R 258 0 R 259 0 R 261 0 R 261 0 R 261 0 R 261 0 R 261 0 R 262 0 R 264 0 R 264 0 R 264 0 R 265 0 R 270 0 R 271 0 R 273 0 R 273 0 R 273 0 R 273 0 R 272 0 R 273 0 R 273 0 R 273 0 R 273 0 R 273 0 R 273 0 R 273 0 R 273 0 R 275 0 R 277 0 R 276 0 R 276 0 R 277 0 R 278 0 R 278 0 R 278 0 R 280 0 R 284 0 R 284 0 R 281 0 R 284 0 R 284 0 R 284 0 R 284 0 R 284 0 R 282 0 R 284 0 R 283 0 R 284 0 R 287 0 R 288 0 R 292 0 R 292 0 R 289 0 R 292 0 R 292 0 R 290 0 R 292 0 R 291 0 R 292 0 R 292 0 R 292 0 R 293 0 R 294 0 R 298 0 R 298 0 R 295 0 R 298 0 R 298 0 R 298 0 R 296 0 R 298 0 R 297 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 301 0 R 302 0 R 305 0 R 303 0 R 305 0 R 305 0 R 305 0 R 304 0 R 305 0 R 305 0 R 305 0 R 305 0 R 305 0 R 306 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 307 0 R 309 0 R 309 0 R 309 0 R 309 0 R 308 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 310 0 R 313 0 R 313 0 R 313 0 R 313 0 R 311 0 R 313 0 R 313 0 R 313 0 R 313 0 R 313 0 R 312 0 R 313 0 R 313 0 R 314 0 R 318 0 R 315 0 R 318 0 R 316 0 R 318 0 R 318 0 R 317 0 R 318 0 R 318 0 R 319 0 R 319 0 R 319 0 R 320 0 R 323 0 R 323 0 R 325 0 R 327 0 R 327 0 R 329 0 R 329 0 R 331 0 R 331 0 R 333 0 R 333 0 R 335 0 R 335 0 R 337 0 R 339 0 R 339 0 R 342 0 R 342 0 R 344 0 R 346 0 R 346 0 R 349 0 R 349 0 R 351 0 R 353 0 R 353 0 R 355 0 R 355 0 R 355 0 R 355 0 R 355 0 R 357 0 R 357 0 R 359 0 R 361 0 R 361 0 R 363 0 R 365 0 R 365 0 R 367 0 R 367 0 R 367 0 R 369 0 R 369 0 R 371 0 R 371 0 R 371 0 R 374 0 R 374 0 R 374 0 R 374 0 R 374 0 R 374 0 R 374 0 R 375 0 R 377 0 R 376 0 R 376 0 R 377 0 R 377 0 R] endobj 19 0 obj -<</Type/StructElem/S/Span/P 349 0 R/A[<</O/Layout/Placement/Block>>]/K[0 1]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 378 0 R/A[<</O/Layout/Placement/Block>>]/K[0 1]/Pg 417 0 R>> endobj 20 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(The mouse)/K[2]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(The mouse)/K[2]/Pg 417 0 R>> endobj 21 0 obj <</Type/StructElem/S/TD/P 23 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[]>> endobj 22 0 obj -<</Type/StructElem/S/TD/P 23 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[3 4]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 23 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[3 4]/Pg 417 0 R>> endobj 23 0 obj <</Type/StructElem/S/TR/P 36 0 R/K[21 0 R 22 0 R]>> @@ -74,7 +74,7 @@ endobj <</Type/StructElem/S/TD/P 26 0 R/A[<</O/Table/Headers[]>>]/K[]>> endobj 25 0 obj -<</Type/StructElem/S/TD/P 26 0 R/A[<</O/Table/Headers[]>>]/K[5 6 7]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 26 0 R/A[<</O/Table/Headers[]>>]/K[5 6 7]/Pg 417 0 R>> endobj 26 0 obj <</Type/StructElem/S/TR/P 36 0 R/K[24 0 R 25 0 R]>> @@ -83,1099 +83,1189 @@ endobj <</Type/StructElem/S/TD/P 29 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[]>> endobj 28 0 obj -<</Type/StructElem/S/TD/P 29 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[8 9 10 11 12 13]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 29 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[8 9 10 11 12 13]/Pg 417 0 R>> endobj 29 0 obj <</Type/StructElem/S/TR/P 36 0 R/K[27 0 R 28 0 R]>> endobj 30 0 obj -<</Type/StructElem/S/TD/P 32 0 R/A[<</O/Table/Headers[]>>]/K[14]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 32 0 R/A[<</O/Table/Headers[]>>]/K[14]/Pg 417 0 R>> endobj 31 0 obj -<</Type/StructElem/S/TD/P 32 0 R/A[<</O/Table/Headers[]>>]/K[15 16 17 18 19 20 21 22]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 32 0 R/A[<</O/Table/Headers[]>>]/K[15 16 17 18 19 20 21 22]/Pg 417 0 R>> endobj 32 0 obj <</Type/StructElem/S/TR/P 36 0 R/K[30 0 R 31 0 R]>> endobj 33 0 obj -<</Type/StructElem/S/TD/P 35 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[23]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 35 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[23]/Pg 417 0 R>> endobj 34 0 obj -<</Type/StructElem/S/TD/P 35 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[24 25 26 27]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 35 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[24 25 26 27]/Pg 417 0 R>> endobj 35 0 obj <</Type/StructElem/S/TR/P 36 0 R/K[33 0 R 34 0 R]>> endobj 36 0 obj -<</Type/StructElem/S/Table/P 349 0 R/K[23 0 R 26 0 R 29 0 R 32 0 R 35 0 R]>> +<</Type/StructElem/S/Table/P 378 0 R/K[23 0 R 26 0 R 29 0 R 32 0 R 35 0 R]>> endobj 37 0 obj -<</Type/StructElem/S/H3/P 349 0 R/T(Chords: hold the first, click the next)/K[28]/Pg 387 0 R>> +<</Type/StructElem/S/H3/P 378 0 R/T(Chords: hold the first, click the next)/K[28]/Pg 417 0 R>> endobj 38 0 obj -<</Type/StructElem/S/TD/P 40 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[29]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 40 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[29]/Pg 417 0 R>> endobj 39 0 obj -<</Type/StructElem/S/TD/P 40 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[30 31]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 40 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[30 31]/Pg 417 0 R>> endobj 40 0 obj <</Type/StructElem/S/TR/P 53 0 R/K[38 0 R 39 0 R]>> endobj 41 0 obj -<</Type/StructElem/S/TD/P 43 0 R/A[<</O/Table/Headers[]>>]/K[32]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 43 0 R/A[<</O/Table/Headers[]>>]/K[32]/Pg 417 0 R>> endobj 42 0 obj -<</Type/StructElem/S/TD/P 43 0 R/A[<</O/Table/Headers[]>>]/K[33]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 43 0 R/A[<</O/Table/Headers[]>>]/K[33]/Pg 417 0 R>> endobj 43 0 obj <</Type/StructElem/S/TR/P 53 0 R/K[41 0 R 42 0 R]>> endobj 44 0 obj -<</Type/StructElem/S/TD/P 46 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[34 35]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 46 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[34 35]/Pg 417 0 R>> endobj 45 0 obj -<</Type/StructElem/S/TD/P 46 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[36 37 38]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 46 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[36 37 38]/Pg 417 0 R>> endobj 46 0 obj <</Type/StructElem/S/TR/P 53 0 R/K[44 0 R 45 0 R]>> endobj 47 0 obj -<</Type/StructElem/S/TD/P 49 0 R/A[<</O/Table/Headers[]>>]/K[39]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 49 0 R/A[<</O/Table/Headers[]>>]/K[39]/Pg 417 0 R>> endobj 48 0 obj -<</Type/StructElem/S/TD/P 49 0 R/A[<</O/Table/Headers[]>>]/K[40 41 42 43 44 45 46]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 49 0 R/A[<</O/Table/Headers[]>>]/K[40 41 42 43 44 45 46]/Pg 417 0 R>> endobj 49 0 obj <</Type/StructElem/S/TR/P 53 0 R/K[47 0 R 48 0 R]>> endobj 50 0 obj -<</Type/StructElem/S/TD/P 52 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[47]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 52 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[47]/Pg 417 0 R>> endobj 51 0 obj -<</Type/StructElem/S/TD/P 52 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[48 49 50]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 52 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[48 49 50]/Pg 417 0 R>> endobj 52 0 obj <</Type/StructElem/S/TR/P 53 0 R/K[50 0 R 51 0 R]>> endobj 53 0 obj -<</Type/StructElem/S/Table/P 349 0 R/K[40 0 R 43 0 R 46 0 R 49 0 R 52 0 R]>> +<</Type/StructElem/S/Table/P 378 0 R/K[40 0 R 43 0 R 46 0 R 49 0 R 52 0 R]>> endobj 54 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[51 52 53 54 55 56 57 58 59 60 61]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[51 52 53 54 55 56 57 58 59 60 61]/Pg 417 0 R>> endobj 55 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Tags)/K[62]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Tags)/K[62]/Pg 417 0 R>> endobj 56 0 obj -<</Type/StructElem/S/Span/P 349 0 R/A[<</O/Layout/Placement/Block>>]/K[63 64 65 66 67 68 69 70 71 72 73 74 75]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 378 0 R/A[<</O/Layout/Placement/Block>>]/K[63 64 65 66 67 68 69 70 71 72 73 74 75]/Pg 417 0 R>> endobj 57 0 obj -<</Type/StructElem/S/Lbl/P 60 0 R/K[76]/Pg 387 0 R>> +<</Type/StructElem/S/Lbl/P 60 0 R/K[76]/Pg 417 0 R>> endobj 58 0 obj -<</Type/StructElem/S/Code/P 59 0 R/K[82]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 59 0 R/K[82]/Pg 417 0 R>> endobj 59 0 obj -<</Type/StructElem/S/LBody/P 60 0 R/K[77 78 79 80 81 58 0 R 83]/Pg 387 0 R>> +<</Type/StructElem/S/LBody/P 60 0 R/K[77 78 79 80 81 58 0 R 83]/Pg 417 0 R>> endobj 60 0 obj <</Type/StructElem/S/LI/P 64 0 R/K[57 0 R 59 0 R]>> endobj 61 0 obj -<</Type/StructElem/S/Lbl/P 63 0 R/K[84]/Pg 387 0 R>> +<</Type/StructElem/S/Lbl/P 63 0 R/K[84]/Pg 417 0 R>> endobj 62 0 obj -<</Type/StructElem/S/LBody/P 63 0 R/K[85 86 87 88 89 90 91 92 93 94]/Pg 387 0 R>> +<</Type/StructElem/S/LBody/P 63 0 R/K[85 86 87 88 89 90 91 92 93 94]/Pg 417 0 R>> endobj 63 0 obj <</Type/StructElem/S/LI/P 64 0 R/K[61 0 R 62 0 R]>> endobj 64 0 obj -<</Type/StructElem/S/L/P 349 0 R/A[<</O/List/ListNumbering/Circle>>]/K[60 0 R 63 0 R]>> +<</Type/StructElem/S/L/P 378 0 R/A[<</O/List/ListNumbering/Circle>>]/K[60 0 R 63 0 R]>> endobj 65 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T( addresses)/K[95 96]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T( addresses)/K[95 96]/Pg 417 0 R>> endobj 66 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[97 98 99 100]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[97 98 99 100]/Pg 417 0 R>> endobj 67 0 obj -<</Type/StructElem/S/TD/P 69 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[101]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 69 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[101]/Pg 417 0 R>> endobj 68 0 obj -<</Type/StructElem/S/TD/P 69 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[102]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 69 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[102]/Pg 417 0 R>> endobj 69 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[67 0 R 68 0 R]>> endobj 70 0 obj -<</Type/StructElem/S/TD/P 72 0 R/A[<</O/Table/Headers[]>>]/K[103]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 72 0 R/A[<</O/Table/Headers[]>>]/K[103]/Pg 417 0 R>> endobj 71 0 obj -<</Type/StructElem/S/TD/P 72 0 R/A[<</O/Table/Headers[]>>]/K[104]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 72 0 R/A[<</O/Table/Headers[]>>]/K[104]/Pg 417 0 R>> endobj 72 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[70 0 R 71 0 R]>> endobj 73 0 obj -<</Type/StructElem/S/TD/P 76 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[105]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 76 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[105]/Pg 417 0 R>> endobj 74 0 obj -<</Type/StructElem/S/Code/P 75 0 R/K[108]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 75 0 R/K[108]/Pg 417 0 R>> endobj 75 0 obj -<</Type/StructElem/S/TD/P 76 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[106 107 74 0 R 109]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 76 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[106 107 74 0 R 109]/Pg 417 0 R>> endobj 76 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[73 0 R 75 0 R]>> endobj 77 0 obj -<</Type/StructElem/S/TD/P 81 0 R/A[<</O/Table/Headers[]>>]/K[110]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 81 0 R/A[<</O/Table/Headers[]>>]/K[110]/Pg 417 0 R>> endobj 78 0 obj -<</Type/StructElem/S/Code/P 80 0 R/K[113]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 80 0 R/K[113]/Pg 417 0 R>> endobj 79 0 obj -<</Type/StructElem/S/Code/P 80 0 R/K[115]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 80 0 R/K[115]/Pg 417 0 R>> endobj 80 0 obj -<</Type/StructElem/S/TD/P 81 0 R/A[<</O/Table/Headers[]>>]/K[111 112 78 0 R 114 79 0 R 116]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 81 0 R/A[<</O/Table/Headers[]>>]/K[111 112 78 0 R 114 79 0 R 116]/Pg 417 0 R>> endobj 81 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[77 0 R 80 0 R]>> endobj 82 0 obj -<</Type/StructElem/S/TD/P 85 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[117]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 85 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[117]/Pg 417 0 R>> endobj 83 0 obj -<</Type/StructElem/S/Code/P 84 0 R/K[123]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 84 0 R/K[123]/Pg 417 0 R>> endobj 84 0 obj -<</Type/StructElem/S/TD/P 85 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[118 119 120 121 122 83 0 R]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 85 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[118 119 120 121 122 83 0 R]/Pg 417 0 R>> endobj 85 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[82 0 R 84 0 R]>> endobj 86 0 obj -<</Type/StructElem/S/TD/P 88 0 R/A[<</O/Table/Headers[]>>]/K[124]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 88 0 R/A[<</O/Table/Headers[]>>]/K[124]/Pg 417 0 R>> endobj 87 0 obj -<</Type/StructElem/S/TD/P 88 0 R/A[<</O/Table/Headers[]>>]/K[125 126]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 88 0 R/A[<</O/Table/Headers[]>>]/K[125 126]/Pg 417 0 R>> endobj 88 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[86 0 R 87 0 R]>> endobj 89 0 obj -<</Type/StructElem/S/TD/P 92 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[127]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 92 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[127]/Pg 417 0 R>> endobj 90 0 obj -<</Type/StructElem/S/Code/P 91 0 R/K[129]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 91 0 R/K[129]/Pg 417 0 R>> endobj 91 0 obj -<</Type/StructElem/S/TD/P 92 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[128 90 0 R 130 131]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 92 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[128 90 0 R 130 131]/Pg 417 0 R>> endobj 92 0 obj <</Type/StructElem/S/TR/P 93 0 R/K[89 0 R 91 0 R]>> endobj 93 0 obj -<</Type/StructElem/S/Table/P 349 0 R/K[69 0 R 72 0 R 76 0 R 81 0 R 85 0 R 88 0 R 92 0 R]>> +<</Type/StructElem/S/Table/P 378 0 R/K[69 0 R 72 0 R 76 0 R 81 0 R 85 0 R 88 0 R 92 0 R]>> endobj 94 0 obj -<</Type/StructElem/S/Code/P 99 0 R/K[133]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 99 0 R/K[133]/Pg 417 0 R>> endobj 95 0 obj -<</Type/StructElem/S/Code/P 99 0 R/K[135]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 99 0 R/K[135]/Pg 417 0 R>> endobj 96 0 obj -<</Type/StructElem/S/Code/P 99 0 R/K[137]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 99 0 R/K[137]/Pg 417 0 R>> endobj 97 0 obj -<</Type/StructElem/S/Code/P 99 0 R/K[139]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 99 0 R/K[139]/Pg 417 0 R>> endobj 98 0 obj -<</Type/StructElem/S/Code/P 99 0 R/K[141]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 99 0 R/K[141]/Pg 417 0 R>> endobj 99 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[132 94 0 R 134 95 0 R 136 96 0 R 138 97 0 R 140 98 0 R 142 143 144]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[132 94 0 R 134 95 0 R 136 96 0 R 138 97 0 R 140 98 0 R 142 143 144]/Pg 417 0 R>> endobj 100 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Keys: normal mode)/K[145]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Keys: normal mode)/K[145]/Pg 417 0 R>> endobj 101 0 obj -<</Type/StructElem/S/Strong/P 104 0 R/K[147]/Pg 387 0 R>> +<</Type/StructElem/S/Strong/P 105 0 R/K[147]/Pg 417 0 R>> endobj 102 0 obj -<</Type/StructElem/S/Code/P 104 0 R/K[150]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 105 0 R/K[150]/Pg 417 0 R>> endobj 103 0 obj -<</Type/StructElem/S/Code/P 104 0 R/K[152]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 105 0 R/K[152]/Pg 417 0 R>> endobj 104 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[146 101 0 R 148 149 102 0 R 151 103 0 R 153 154]/Pg 387 0 R>> +<</Type/StructElem/S/Link/P 105 0 R/K[155<</Type/OBJR/Pg 417 0 R/Obj 379 0 R>>]/Pg 417 0 R>> endobj 105 0 obj -<</Type/StructElem/S/TD/P 107 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[155 156 157 158 159 160 161 162]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[146 101 0 R 148 149 102 0 R 151 103 0 R 153 154 104 0 R 156]/Pg 417 0 R>> endobj 106 0 obj -<</Type/StructElem/S/TD/P 107 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[163]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 108 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[157 158 159 160 161 162 163 164]/Pg 417 0 R>> endobj 107 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[105 0 R 106 0 R]>> +<</Type/StructElem/S/TD/P 108 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[165]/Pg 417 0 R>> endobj 108 0 obj -<</Type/StructElem/S/TD/P 110 0 R/A[<</O/Table/Headers[]>>]/K[164 165 166 167 168 169]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[106 0 R 107 0 R]>> endobj 109 0 obj -<</Type/StructElem/S/TD/P 110 0 R/A[<</O/Table/Headers[]>>]/K[170]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 111 0 R/A[<</O/Table/Headers[]>>]/K[166 167 168 169 170 171]/Pg 417 0 R>> endobj 110 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[108 0 R 109 0 R]>> +<</Type/StructElem/S/TD/P 111 0 R/A[<</O/Table/Headers[]>>]/K[172]/Pg 417 0 R>> endobj 111 0 obj -<</Type/StructElem/S/TD/P 113 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[171 172 173 174 175 176 177]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[109 0 R 110 0 R]>> endobj 112 0 obj -<</Type/StructElem/S/TD/P 113 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[178 179]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 114 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[173 174 175 176 177 178 179]/Pg 417 0 R>> endobj 113 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[111 0 R 112 0 R]>> +<</Type/StructElem/S/TD/P 114 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[180 181]/Pg 417 0 R>> endobj 114 0 obj -<</Type/StructElem/S/TD/P 116 0 R/A[<</O/Table/Headers[]>>]/K[180 181 182]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[112 0 R 113 0 R]>> endobj 115 0 obj -<</Type/StructElem/S/TD/P 116 0 R/A[<</O/Table/Headers[]>>]/K[183]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 117 0 R/A[<</O/Table/Headers[]>>]/K[182 183 184]/Pg 417 0 R>> endobj 116 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[114 0 R 115 0 R]>> +<</Type/StructElem/S/TD/P 117 0 R/A[<</O/Table/Headers[]>>]/K[185]/Pg 417 0 R>> endobj 117 0 obj -<</Type/StructElem/S/TD/P 119 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[184]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[115 0 R 116 0 R]>> endobj 118 0 obj -<</Type/StructElem/S/TD/P 119 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[185]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 120 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[186]/Pg 417 0 R>> endobj 119 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[117 0 R 118 0 R]>> +<</Type/StructElem/S/TD/P 120 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[187]/Pg 417 0 R>> endobj 120 0 obj -<</Type/StructElem/S/TD/P 122 0 R/A[<</O/Table/Headers[]>>]/K[186 187 188]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[118 0 R 119 0 R]>> endobj 121 0 obj -<</Type/StructElem/S/TD/P 122 0 R/A[<</O/Table/Headers[]>>]/K[189]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 123 0 R/A[<</O/Table/Headers[]>>]/K[188 189 190]/Pg 417 0 R>> endobj 122 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[120 0 R 121 0 R]>> +<</Type/StructElem/S/TD/P 123 0 R/A[<</O/Table/Headers[]>>]/K[191]/Pg 417 0 R>> endobj 123 0 obj -<</Type/StructElem/S/TD/P 125 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[190 191 192]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[121 0 R 122 0 R]>> endobj 124 0 obj -<</Type/StructElem/S/TD/P 125 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[193]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 126 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[192 193 194]/Pg 417 0 R>> endobj 125 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[123 0 R 124 0 R]>> +<</Type/StructElem/S/TD/P 126 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[195]/Pg 417 0 R>> endobj 126 0 obj -<</Type/StructElem/S/TD/P 128 0 R/A[<</O/Table/Headers[]>>]/K[194 195]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[124 0 R 125 0 R]>> endobj 127 0 obj -<</Type/StructElem/S/TD/P 128 0 R/A[<</O/Table/Headers[]>>]/K[196]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 129 0 R/A[<</O/Table/Headers[]>>]/K[196 197]/Pg 417 0 R>> endobj 128 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[126 0 R 127 0 R]>> +<</Type/StructElem/S/TD/P 129 0 R/A[<</O/Table/Headers[]>>]/K[198]/Pg 417 0 R>> endobj 129 0 obj -<</Type/StructElem/S/TD/P 131 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[197 198 199 200 201 202]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[127 0 R 128 0 R]>> endobj 130 0 obj -<</Type/StructElem/S/TD/P 131 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[203 204 205]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 132 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[199 200 201 202 203 204]/Pg 417 0 R>> endobj 131 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[129 0 R 130 0 R]>> +<</Type/StructElem/S/TD/P 132 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[205 206 207]/Pg 417 0 R>> endobj 132 0 obj -<</Type/StructElem/S/TD/P 134 0 R/A[<</O/Table/Headers[]>>]/K[206 207]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[130 0 R 131 0 R]>> endobj 133 0 obj -<</Type/StructElem/S/TD/P 134 0 R/A[<</O/Table/Headers[]>>]/K[208 209]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 135 0 R/A[<</O/Table/Headers[]>>]/K[208 209]/Pg 417 0 R>> endobj 134 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[132 0 R 133 0 R]>> +<</Type/StructElem/S/TD/P 135 0 R/A[<</O/Table/Headers[]>>]/K[210 211]/Pg 417 0 R>> endobj 135 0 obj -<</Type/StructElem/S/TD/P 137 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[210 211]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[133 0 R 134 0 R]>> endobj 136 0 obj -<</Type/StructElem/S/TD/P 137 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[212 213]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 138 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[212 213]/Pg 417 0 R>> endobj 137 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[135 0 R 136 0 R]>> +<</Type/StructElem/S/TD/P 138 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[214 215]/Pg 417 0 R>> endobj 138 0 obj -<</Type/StructElem/S/TD/P 140 0 R/A[<</O/Table/Headers[]>>]/K[214 215 216]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[136 0 R 137 0 R]>> endobj 139 0 obj -<</Type/StructElem/S/TD/P 140 0 R/A[<</O/Table/Headers[]>>]/K[217]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 141 0 R/A[<</O/Table/Headers[]>>]/K[216 217 218]/Pg 417 0 R>> endobj 140 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[138 0 R 139 0 R]>> +<</Type/StructElem/S/TD/P 141 0 R/A[<</O/Table/Headers[]>>]/K[219]/Pg 417 0 R>> endobj 141 0 obj -<</Type/StructElem/S/TD/P 143 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[218 219 220 221 222 223]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[139 0 R 140 0 R]>> endobj 142 0 obj -<</Type/StructElem/S/TD/P 143 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[224 225]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 144 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[220 221 222 223 224 225]/Pg 417 0 R>> endobj 143 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[141 0 R 142 0 R]>> +<</Type/StructElem/S/TD/P 144 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[226 227]/Pg 417 0 R>> endobj 144 0 obj -<</Type/StructElem/S/TD/P 146 0 R/A[<</O/Table/Headers[]>>]/K[226]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[142 0 R 143 0 R]>> endobj 145 0 obj -<</Type/StructElem/S/TD/P 146 0 R/A[<</O/Table/Headers[]>>]/K[227 228]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 147 0 R/A[<</O/Table/Headers[]>>]/K[228]/Pg 417 0 R>> endobj 146 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[144 0 R 145 0 R]>> +<</Type/StructElem/S/TD/P 147 0 R/A[<</O/Table/Headers[]>>]/K[229 230]/Pg 417 0 R>> endobj 147 0 obj -<</Type/StructElem/S/TD/P 149 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[229 230 231 232 233 234]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[145 0 R 146 0 R]>> endobj 148 0 obj -<</Type/StructElem/S/TD/P 149 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[235 236]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 150 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[231 232 233 234 235 236]/Pg 417 0 R>> endobj 149 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[147 0 R 148 0 R]>> +<</Type/StructElem/S/TD/P 150 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[237 238]/Pg 417 0 R>> endobj 150 0 obj -<</Type/StructElem/S/TD/P 152 0 R/A[<</O/Table/Headers[]>>]/K[237 238 239 240 241 242]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[148 0 R 149 0 R]>> endobj 151 0 obj -<</Type/StructElem/S/TD/P 152 0 R/A[<</O/Table/Headers[]>>]/K[243]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 153 0 R/A[<</O/Table/Headers[]>>]/K[239 240 241 242 243 244]/Pg 417 0 R>> endobj 152 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[150 0 R 151 0 R]>> +<</Type/StructElem/S/TD/P 153 0 R/A[<</O/Table/Headers[]>>]/K[245]/Pg 417 0 R>> endobj 153 0 obj -<</Type/StructElem/S/TD/P 155 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[244 245]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[151 0 R 152 0 R]>> endobj 154 0 obj -<</Type/StructElem/S/TD/P 155 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[246 247 248 249 250 251 252]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 156 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[246 247]/Pg 417 0 R>> endobj 155 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[153 0 R 154 0 R]>> +<</Type/StructElem/S/TD/P 156 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[248 249 250 251 252 253 254]/Pg 417 0 R>> endobj 156 0 obj -<</Type/StructElem/S/TD/P 158 0 R/A[<</O/Table/Headers[]>>]/K[253]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 160 0 R/K[154 0 R 155 0 R]>> endobj 157 0 obj -<</Type/StructElem/S/TD/P 158 0 R/A[<</O/Table/Headers[]>>]/K[254]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 159 0 R/A[<</O/Table/Headers[]>>]/K[255]/Pg 417 0 R>> endobj 158 0 obj -<</Type/StructElem/S/TR/P 159 0 R/K[156 0 R 157 0 R]>> +<</Type/StructElem/S/TD/P 159 0 R/A[<</O/Table/Headers[]>>]/K[256]/Pg 417 0 R>> endobj 159 0 obj -<</Type/StructElem/S/Table/P 349 0 R/K[107 0 R 110 0 R 113 0 R 116 0 R 119 0 R 122 0 R 125 0 R 128 0 R 131 0 R 134 0 R 137 0 R 140 0 R 143 0 R 146 0 R 149 0 R 152 0 R 155 0 R 158 0 R]>> +<</Type/StructElem/S/TR/P 160 0 R/K[157 0 R 158 0 R]>> endobj 160 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[255]/Pg 387 0 R>> +<</Type/StructElem/S/Table/P 378 0 R/K[108 0 R 111 0 R 114 0 R 117 0 R 120 0 R 123 0 R 126 0 R 129 0 R 132 0 R 135 0 R 138 0 R 141 0 R 144 0 R 147 0 R 150 0 R 153 0 R 156 0 R 159 0 R]>> endobj 161 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Keys: panes)/K[256]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[257]/Pg 417 0 R>> endobj 162 0 obj -<</Type/StructElem/S/TD/P 165 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[257 258 259 260 261 262 263 264]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Keys: panes)/K[258]/Pg 417 0 R>> endobj 163 0 obj -<</Type/StructElem/S/Code/P 164 0 R/K[268]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 166 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[259 260 261 262 263 264 265 266]/Pg 417 0 R>> endobj 164 0 obj -<</Type/StructElem/S/TD/P 165 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[265 266 267 163 0 R 269]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 165 0 R/K[270]/Pg 417 0 R>> endobj 165 0 obj -<</Type/StructElem/S/TR/P 181 0 R/K[162 0 R 164 0 R]>> +<</Type/StructElem/S/TD/P 166 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[267 268 269 164 0 R 271]/Pg 417 0 R>> endobj 166 0 obj -<</Type/StructElem/S/TD/P 168 0 R/A[<</O/Table/Headers[]>>]/K[270]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 182 0 R/K[163 0 R 165 0 R]>> endobj 167 0 obj -<</Type/StructElem/S/TD/P 168 0 R/A[<</O/Table/Headers[]>>]/K[271 272 273 274]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 169 0 R/A[<</O/Table/Headers[]>>]/K[272]/Pg 417 0 R>> endobj 168 0 obj -<</Type/StructElem/S/TR/P 181 0 R/K[166 0 R 167 0 R]>> +<</Type/StructElem/S/TD/P 169 0 R/A[<</O/Table/Headers[]>>]/K[273 274 275 276]/Pg 417 0 R>> endobj 169 0 obj -<</Type/StructElem/S/TD/P 171 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[275 276 277]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 182 0 R/K[167 0 R 168 0 R]>> endobj 170 0 obj -<</Type/StructElem/S/TD/P 171 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[278 279 280 281 282]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 172 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[277 278 279]/Pg 417 0 R>> endobj 171 0 obj -<</Type/StructElem/S/TR/P 181 0 R/K[169 0 R 170 0 R]>> +<</Type/StructElem/S/TD/P 172 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[280 281 282 283 284]/Pg 417 0 R>> endobj 172 0 obj -<</Type/StructElem/S/TD/P 174 0 R/A[<</O/Table/Headers[]>>]/K[283 284 285 286 287 288]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 182 0 R/K[170 0 R 171 0 R]>> endobj 173 0 obj -<</Type/StructElem/S/TD/P 174 0 R/A[<</O/Table/Headers[]>>]/K[289 290]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 175 0 R/A[<</O/Table/Headers[]>>]/K[285 286 287 288 289 290]/Pg 417 0 R>> endobj 174 0 obj -<</Type/StructElem/S/TR/P 181 0 R/K[172 0 R 173 0 R]>> +<</Type/StructElem/S/TD/P 175 0 R/A[<</O/Table/Headers[]>>]/K[291 292 293 294 295 296 297 298 299 300 301 302 303 304]/Pg 417 0 R>> endobj 175 0 obj -<</Type/StructElem/S/TD/P 177 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[291 292 293]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 182 0 R/K[173 0 R 174 0 R]>> endobj 176 0 obj -<</Type/StructElem/S/TD/P 177 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[294]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 178 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[305 306 307]/Pg 417 0 R>> endobj 177 0 obj -<</Type/StructElem/S/TR/P 181 0 R/K[175 0 R 176 0 R]>> +<</Type/StructElem/S/TD/P 178 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[308]/Pg 417 0 R>> endobj 178 0 obj -<</Type/StructElem/S/TD/P 180 0 R/A[<</O/Table/Headers[]>>]/K[295 296 297]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 182 0 R/K[176 0 R 177 0 R]>> endobj 179 0 obj -<</Type/StructElem/S/TD/P 180 0 R/A[<</O/Table/Headers[]>>]/K[298 299]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 181 0 R/A[<</O/Table/Headers[]>>]/K[309 310 311]/Pg 417 0 R>> endobj 180 0 obj -<</Type/StructElem/S/TR/P 181 0 R/K[178 0 R 179 0 R]>> +<</Type/StructElem/S/TD/P 181 0 R/A[<</O/Table/Headers[]>>]/K[312 313]/Pg 417 0 R>> endobj 181 0 obj -<</Type/StructElem/S/Table/P 349 0 R/K[165 0 R 168 0 R 171 0 R 174 0 R 177 0 R 180 0 R]>> +<</Type/StructElem/S/TR/P 182 0 R/K[179 0 R 180 0 R]>> endobj 182 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(The leader: in normal mode)/K[300 301 302]/Pg 387 0 R>> +<</Type/StructElem/S/Table/P 378 0 R/K[166 0 R 169 0 R 172 0 R 175 0 R 178 0 R 181 0 R]>> endobj 183 0 obj -<</Type/StructElem/S/TD/P 185 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[303 304 305]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(The leader: in normal mode)/K[314 315 316]/Pg 417 0 R>> endobj 184 0 obj -<</Type/StructElem/S/TD/P 185 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[306]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 186 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[317 318 319]/Pg 417 0 R>> endobj 185 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[183 0 R 184 0 R]>> +<</Type/StructElem/S/TD/P 186 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[320 321 322 323]/Pg 417 0 R>> endobj 186 0 obj -<</Type/StructElem/S/TD/P 188 0 R/A[<</O/Table/Headers[]>>]/K[307 308 309 310 311]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[184 0 R 185 0 R]>> endobj 187 0 obj -<</Type/StructElem/S/TD/P 188 0 R/A[<</O/Table/Headers[]>>]/K[312]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 189 0 R/A[<</O/Table/Headers[]>>]/K[324 325 326 327 328]/Pg 417 0 R>> endobj 188 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[186 0 R 187 0 R]>> +<</Type/StructElem/S/TD/P 189 0 R/A[<</O/Table/Headers[]>>]/K[329]/Pg 417 0 R>> endobj 189 0 obj -<</Type/StructElem/S/TD/P 191 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[313 314 315 316 317]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[187 0 R 188 0 R]>> endobj 190 0 obj -<</Type/StructElem/S/TD/P 191 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[318]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 192 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[330 331 332 333 334]/Pg 417 0 R>> endobj 191 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[189 0 R 190 0 R]>> +<</Type/StructElem/S/TD/P 192 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[335]/Pg 417 0 R>> endobj 192 0 obj -<</Type/StructElem/S/TD/P 194 0 R/A[<</O/Table/Headers[]>>]/K[319 320 321 322 323]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[190 0 R 191 0 R]>> endobj 193 0 obj -<</Type/StructElem/S/TD/P 194 0 R/A[<</O/Table/Headers[]>>]/K[324]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 195 0 R/A[<</O/Table/Headers[]>>]/K[336 337 338 339 340]/Pg 417 0 R>> endobj 194 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[192 0 R 193 0 R]>> +<</Type/StructElem/S/TD/P 195 0 R/A[<</O/Table/Headers[]>>]/K[341]/Pg 417 0 R>> endobj 195 0 obj -<</Type/StructElem/S/TD/P 197 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[325 326 327 328 329]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[193 0 R 194 0 R]>> endobj 196 0 obj -<</Type/StructElem/S/TD/P 197 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[330]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 198 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[342 343 344 345 346]/Pg 417 0 R>> endobj 197 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[195 0 R 196 0 R]>> +<</Type/StructElem/S/TD/P 198 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[347]/Pg 417 0 R>> endobj 198 0 obj -<</Type/StructElem/S/TD/P 200 0 R/A[<</O/Table/Headers[]>>]/K[331 332 333 334 335]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[196 0 R 197 0 R]>> endobj 199 0 obj -<</Type/StructElem/S/TD/P 200 0 R/A[<</O/Table/Headers[]>>]/K[336]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 201 0 R/A[<</O/Table/Headers[]>>]/K[348 349 350 351 352]/Pg 417 0 R>> endobj 200 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[198 0 R 199 0 R]>> +<</Type/StructElem/S/TD/P 201 0 R/A[<</O/Table/Headers[]>>]/K[353]/Pg 417 0 R>> endobj 201 0 obj -<</Type/StructElem/S/TD/P 203 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[337 338 339 340 341]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[199 0 R 200 0 R]>> endobj 202 0 obj -<</Type/StructElem/S/TD/P 203 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[342]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 204 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[354 355 356 357 358]/Pg 417 0 R>> endobj 203 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[201 0 R 202 0 R]>> +<</Type/StructElem/S/TD/P 204 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[359]/Pg 417 0 R>> endobj 204 0 obj -<</Type/StructElem/S/TD/P 206 0 R/A[<</O/Table/Headers[]>>]/K[343 344 345]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[202 0 R 203 0 R]>> endobj 205 0 obj -<</Type/StructElem/S/TD/P 206 0 R/A[<</O/Table/Headers[]>>]/K[346]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 207 0 R/A[<</O/Table/Headers[]>>]/K[360 361 362]/Pg 417 0 R>> endobj 206 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[204 0 R 205 0 R]>> +<</Type/StructElem/S/TD/P 207 0 R/A[<</O/Table/Headers[]>>]/K[363]/Pg 417 0 R>> endobj 207 0 obj -<</Type/StructElem/S/TD/P 209 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[347 348 349 350 351]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[205 0 R 206 0 R]>> endobj 208 0 obj -<</Type/StructElem/S/TD/P 209 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[352]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 210 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[364 365 366 367 368]/Pg 417 0 R>> endobj 209 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[207 0 R 208 0 R]>> +<</Type/StructElem/S/TD/P 210 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[369]/Pg 417 0 R>> endobj 210 0 obj -<</Type/StructElem/S/TD/P 212 0 R/A[<</O/Table/Headers[]>>]/K[353 354 355 356 357]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[208 0 R 209 0 R]>> endobj 211 0 obj -<</Type/StructElem/S/TD/P 212 0 R/A[<</O/Table/Headers[]>>]/K[358]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 213 0 R/A[<</O/Table/Headers[]>>]/K[370 371 372 373 374]/Pg 417 0 R>> endobj 212 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[210 0 R 211 0 R]>> +<</Type/StructElem/S/TD/P 213 0 R/A[<</O/Table/Headers[]>>]/K[375]/Pg 417 0 R>> endobj 213 0 obj -<</Type/StructElem/S/TD/P 215 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[359 360 361 362 363]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[211 0 R 212 0 R]>> endobj 214 0 obj -<</Type/StructElem/S/TD/P 215 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[364]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 216 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[376 377 378 379 380]/Pg 417 0 R>> endobj 215 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[213 0 R 214 0 R]>> +<</Type/StructElem/S/TD/P 216 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[381]/Pg 417 0 R>> endobj 216 0 obj -<</Type/StructElem/S/TD/P 218 0 R/A[<</O/Table/Headers[]>>]/K[365 366 367 368 369]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[214 0 R 215 0 R]>> endobj 217 0 obj -<</Type/StructElem/S/TD/P 218 0 R/A[<</O/Table/Headers[]>>]/K[370]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 219 0 R/A[<</O/Table/Headers[]>>]/K[382 383 384 385 386]/Pg 417 0 R>> endobj 218 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[216 0 R 217 0 R]>> +<</Type/StructElem/S/TD/P 219 0 R/A[<</O/Table/Headers[]>>]/K[387]/Pg 417 0 R>> endobj 219 0 obj -<</Type/StructElem/S/TD/P 221 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[371 372 373 374 375]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[217 0 R 218 0 R]>> endobj 220 0 obj -<</Type/StructElem/S/TD/P 221 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[376]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 222 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[388 389 390 391 392]/Pg 417 0 R>> endobj 221 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[219 0 R 220 0 R]>> +<</Type/StructElem/S/TD/P 222 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[393]/Pg 417 0 R>> endobj 222 0 obj -<</Type/StructElem/S/TD/P 224 0 R/A[<</O/Table/Headers[]>>]/K[377 378 379]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 226 0 R/K[220 0 R 221 0 R]>> endobj 223 0 obj -<</Type/StructElem/S/TD/P 224 0 R/A[<</O/Table/Headers[]>>]/K[380]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 225 0 R/A[<</O/Table/Headers[]>>]/K[394 395 396]/Pg 417 0 R>> endobj 224 0 obj -<</Type/StructElem/S/TR/P 225 0 R/K[222 0 R 223 0 R]>> +<</Type/StructElem/S/TD/P 225 0 R/A[<</O/Table/Headers[]>>]/K[397]/Pg 417 0 R>> endobj 225 0 obj -<</Type/StructElem/S/Table/P 226 0 R/K[185 0 R 188 0 R 191 0 R 194 0 R 197 0 R 200 0 R 203 0 R 206 0 R 209 0 R 212 0 R 215 0 R 218 0 R 221 0 R 224 0 R]>> +<</Type/StructElem/S/TR/P 226 0 R/K[223 0 R 224 0 R]>> endobj 226 0 obj -<</Type/StructElem/S/Div/P 268 0 R/K[225 0 R]>> +<</Type/StructElem/S/Table/P 227 0 R/K[186 0 R 189 0 R 192 0 R 195 0 R 198 0 R 201 0 R 204 0 R 207 0 R 210 0 R 213 0 R 216 0 R 219 0 R 222 0 R 225 0 R]>> endobj 227 0 obj -<</Type/StructElem/S/TD/P 229 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[381 382 383]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 269 0 R/K[226 0 R]>> endobj 228 0 obj -<</Type/StructElem/S/TD/P 229 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[384]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 230 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[398 399 400]/Pg 417 0 R>> endobj 229 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[227 0 R 228 0 R]>> +<</Type/StructElem/S/TD/P 230 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[401]/Pg 417 0 R>> endobj 230 0 obj -<</Type/StructElem/S/TD/P 232 0 R/A[<</O/Table/Headers[]>>]/K[385 386 387 388 389]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[228 0 R 229 0 R]>> endobj 231 0 obj -<</Type/StructElem/S/TD/P 232 0 R/A[<</O/Table/Headers[]>>]/K[390]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 233 0 R/A[<</O/Table/Headers[]>>]/K[402 403 404 405 406]/Pg 417 0 R>> endobj 232 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[230 0 R 231 0 R]>> +<</Type/StructElem/S/TD/P 233 0 R/A[<</O/Table/Headers[]>>]/K[407]/Pg 417 0 R>> endobj 233 0 obj -<</Type/StructElem/S/TD/P 235 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[391 392 393 394 395]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[231 0 R 232 0 R]>> endobj 234 0 obj -<</Type/StructElem/S/TD/P 235 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[396]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 236 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[408 409 410 411 412]/Pg 417 0 R>> endobj 235 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[233 0 R 234 0 R]>> +<</Type/StructElem/S/TD/P 236 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[413]/Pg 417 0 R>> endobj 236 0 obj -<</Type/StructElem/S/TD/P 238 0 R/A[<</O/Table/Headers[]>>]/K[397 398 399 400 401]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[234 0 R 235 0 R]>> endobj 237 0 obj -<</Type/StructElem/S/TD/P 238 0 R/A[<</O/Table/Headers[]>>]/K[402]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 239 0 R/A[<</O/Table/Headers[]>>]/K[414 415 416 417 418]/Pg 417 0 R>> endobj 238 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[236 0 R 237 0 R]>> +<</Type/StructElem/S/TD/P 239 0 R/A[<</O/Table/Headers[]>>]/K[419]/Pg 417 0 R>> endobj 239 0 obj -<</Type/StructElem/S/TD/P 241 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[403 404 405 406 407]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[237 0 R 238 0 R]>> endobj 240 0 obj -<</Type/StructElem/S/TD/P 241 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[408]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 242 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[420 421 422 423 424]/Pg 417 0 R>> endobj 241 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[239 0 R 240 0 R]>> +<</Type/StructElem/S/TD/P 242 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[425]/Pg 417 0 R>> endobj 242 0 obj -<</Type/StructElem/S/TD/P 244 0 R/A[<</O/Table/Headers[]>>]/K[409 410 411 412 413]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[240 0 R 241 0 R]>> endobj 243 0 obj -<</Type/StructElem/S/TD/P 244 0 R/A[<</O/Table/Headers[]>>]/K[414]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 245 0 R/A[<</O/Table/Headers[]>>]/K[426 427 428 429 430]/Pg 417 0 R>> endobj 244 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[242 0 R 243 0 R]>> +<</Type/StructElem/S/TD/P 245 0 R/A[<</O/Table/Headers[]>>]/K[431]/Pg 417 0 R>> endobj 245 0 obj -<</Type/StructElem/S/TD/P 247 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[415 416 417 418 419]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[243 0 R 244 0 R]>> endobj 246 0 obj -<</Type/StructElem/S/TD/P 247 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[420]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 248 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[432 433 434 435 436]/Pg 417 0 R>> endobj 247 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[245 0 R 246 0 R]>> +<</Type/StructElem/S/TD/P 248 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[437]/Pg 417 0 R>> endobj 248 0 obj -<</Type/StructElem/S/TD/P 250 0 R/A[<</O/Table/Headers[]>>]/K[421 422 423 424 425]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[246 0 R 247 0 R]>> endobj 249 0 obj -<</Type/StructElem/S/TD/P 250 0 R/A[<</O/Table/Headers[]>>]/K[426]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 251 0 R/A[<</O/Table/Headers[]>>]/K[438 439 440 441 442]/Pg 417 0 R>> endobj 250 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[248 0 R 249 0 R]>> +<</Type/StructElem/S/TD/P 251 0 R/A[<</O/Table/Headers[]>>]/K[443]/Pg 417 0 R>> endobj 251 0 obj -<</Type/StructElem/S/TD/P 253 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[427 428 429 430 431]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[249 0 R 250 0 R]>> endobj 252 0 obj -<</Type/StructElem/S/TD/P 253 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[432]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 254 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[444 445 446 447 448]/Pg 417 0 R>> endobj 253 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[251 0 R 252 0 R]>> +<</Type/StructElem/S/TD/P 254 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[449]/Pg 417 0 R>> endobj 254 0 obj -<</Type/StructElem/S/TD/P 256 0 R/A[<</O/Table/Headers[]>>]/K[433 434 435 436 437]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[252 0 R 253 0 R]>> endobj 255 0 obj -<</Type/StructElem/S/TD/P 256 0 R/A[<</O/Table/Headers[]>>]/K[438]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 257 0 R/A[<</O/Table/Headers[]>>]/K[450 451 452 453 454]/Pg 417 0 R>> endobj 256 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[254 0 R 255 0 R]>> +<</Type/StructElem/S/TD/P 257 0 R/A[<</O/Table/Headers[]>>]/K[455]/Pg 417 0 R>> endobj 257 0 obj -<</Type/StructElem/S/TD/P 259 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[439 440 441 442 443]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[255 0 R 256 0 R]>> endobj 258 0 obj -<</Type/StructElem/S/TD/P 259 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[444]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 260 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[456 457 458 459 460]/Pg 417 0 R>> endobj 259 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[257 0 R 258 0 R]>> +<</Type/StructElem/S/TD/P 260 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[461]/Pg 417 0 R>> endobj 260 0 obj -<</Type/StructElem/S/TD/P 262 0 R/A[<</O/Table/Headers[]>>]/K[445 446 447 448 449]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[258 0 R 259 0 R]>> endobj 261 0 obj -<</Type/StructElem/S/TD/P 262 0 R/A[<</O/Table/Headers[]>>]/K[450]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 263 0 R/A[<</O/Table/Headers[]>>]/K[462 463 464 465 466]/Pg 417 0 R>> endobj 262 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[260 0 R 261 0 R]>> +<</Type/StructElem/S/TD/P 263 0 R/A[<</O/Table/Headers[]>>]/K[467]/Pg 417 0 R>> endobj 263 0 obj -<</Type/StructElem/S/TD/P 265 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[451 452 453]/Pg 387 0 R>> +<</Type/StructElem/S/TR/P 267 0 R/K[261 0 R 262 0 R]>> endobj 264 0 obj -<</Type/StructElem/S/TD/P 265 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[454]/Pg 387 0 R>> +<</Type/StructElem/S/TD/P 266 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[468 469 470]/Pg 417 0 R>> endobj 265 0 obj -<</Type/StructElem/S/TR/P 266 0 R/K[263 0 R 264 0 R]>> +<</Type/StructElem/S/TD/P 266 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[471]/Pg 417 0 R>> endobj 266 0 obj -<</Type/StructElem/S/Table/P 267 0 R/K[229 0 R 232 0 R 235 0 R 238 0 R 241 0 R 244 0 R 247 0 R 250 0 R 253 0 R 256 0 R 259 0 R 262 0 R 265 0 R]>> +<</Type/StructElem/S/TR/P 267 0 R/K[264 0 R 265 0 R]>> endobj 267 0 obj -<</Type/StructElem/S/Div/P 268 0 R/K[266 0 R]>> +<</Type/StructElem/S/Table/P 268 0 R/K[230 0 R 233 0 R 236 0 R 239 0 R 242 0 R 245 0 R 248 0 R 251 0 R 254 0 R 257 0 R 260 0 R 263 0 R 266 0 R]>> endobj 268 0 obj -<</Type/StructElem/S/Div/P 349 0 R/K[226 0 R 267 0 R]>> +<</Type/StructElem/S/Div/P 269 0 R/K[267 0 R]>> endobj 269 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Terminals and commands)/K[455]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 378 0 R/K[227 0 R 268 0 R]>> endobj 270 0 obj -<</Type/StructElem/S/Lbl/P 273 0 R/K[456]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Terminals and commands)/K[472]/Pg 417 0 R>> endobj 271 0 obj -<</Type/StructElem/S/Code/P 272 0 R/K[461]/Pg 387 0 R>> +<</Type/StructElem/S/Lbl/P 274 0 R/K[473]/Pg 417 0 R>> endobj 272 0 obj -<</Type/StructElem/S/LBody/P 273 0 R/K[457 458 459 460 271 0 R 462 463 464 465 466 467 468 469]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 273 0 R/K[478]/Pg 417 0 R>> endobj 273 0 obj -<</Type/StructElem/S/LI/P 285 0 R/K[270 0 R 272 0 R]>> +<</Type/StructElem/S/LBody/P 274 0 R/K[474 475 476 477 272 0 R 479 480 481 482 483 484 485 486]/Pg 417 0 R>> endobj 274 0 obj -<</Type/StructElem/S/Lbl/P 278 0 R/K[470]/Pg 387 0 R>> +<</Type/StructElem/S/LI/P 286 0 R/K[271 0 R 273 0 R]>> endobj 275 0 obj -<</Type/StructElem/S/Strong/P 276 0 R/K[472 473]/Pg 387 0 R>> +<</Type/StructElem/S/Lbl/P 279 0 R/K[487]/Pg 417 0 R>> endobj 276 0 obj -<</Type/StructElem/S/P/P 277 0 R/K[471 275 0 R 474]/Pg 387 0 R>> +<</Type/StructElem/S/Strong/P 277 0 R/K[489 490]/Pg 417 0 R>> endobj 277 0 obj -<</Type/StructElem/S/LBody/P 278 0 R/K[276 0 R 475 476 477]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 278 0 R/K[488 276 0 R 491]/Pg 417 0 R>> endobj 278 0 obj -<</Type/StructElem/S/LI/P 285 0 R/K[274 0 R 277 0 R]>> +<</Type/StructElem/S/LBody/P 279 0 R/K[277 0 R 492 493 494]/Pg 417 0 R>> endobj 279 0 obj -<</Type/StructElem/S/Lbl/P 284 0 R/K[478]/Pg 387 0 R>> +<</Type/StructElem/S/LI/P 286 0 R/K[275 0 R 278 0 R]>> endobj 280 0 obj -<</Type/StructElem/S/Code/P 283 0 R/K[481]/Pg 387 0 R>> +<</Type/StructElem/S/Lbl/P 285 0 R/K[495]/Pg 417 0 R>> endobj 281 0 obj -<</Type/StructElem/S/Code/P 283 0 R/K[487]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 284 0 R/K[498]/Pg 417 0 R>> endobj 282 0 obj -<</Type/StructElem/S/Code/P 283 0 R/K[489]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 284 0 R/K[504]/Pg 417 0 R>> endobj 283 0 obj -<</Type/StructElem/S/LBody/P 284 0 R/K[479 480 280 0 R 482 483 484 485 486 281 0 R 488 282 0 R 490]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 284 0 R/K[506]/Pg 417 0 R>> endobj 284 0 obj -<</Type/StructElem/S/LI/P 285 0 R/K[279 0 R 283 0 R]>> +<</Type/StructElem/S/LBody/P 285 0 R/K[496 497 281 0 R 499 500 501 502 503 282 0 R 505 283 0 R 507]/Pg 417 0 R>> endobj 285 0 obj -<</Type/StructElem/S/L/P 349 0 R/A[<</O/List/ListNumbering/Circle>>]/K[273 0 R 278 0 R 284 0 R]>> +<</Type/StructElem/S/LI/P 286 0 R/K[280 0 R 284 0 R]>> endobj 286 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Reviewing diffs)/K[491]/Pg 387 0 R>> +<</Type/StructElem/S/L/P 378 0 R/A[<</O/List/ListNumbering/Circle>>]/K[274 0 R 279 0 R 285 0 R]>> endobj 287 0 obj -<</Type/StructElem/S/Code/P 291 0 R/K[492]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Reviewing diffs)/K[508]/Pg 417 0 R>> endobj 288 0 obj -<</Type/StructElem/S/Code/P 291 0 R/K[495]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 292 0 R/K[509]/Pg 417 0 R>> endobj 289 0 obj -<</Type/StructElem/S/Code/P 291 0 R/K[498]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 292 0 R/K[512]/Pg 417 0 R>> endobj 290 0 obj -<</Type/StructElem/S/Code/P 291 0 R/K[500]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 292 0 R/K[515]/Pg 417 0 R>> endobj 291 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[287 0 R 493 494 288 0 R 496 497 289 0 R 499 290 0 R 501 502 503]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 292 0 R/K[517]/Pg 417 0 R>> endobj 292 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Finding things)/K[504]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[288 0 R 510 511 289 0 R 513 514 290 0 R 516 291 0 R 518 519 520]/Pg 417 0 R>> endobj 293 0 obj -<</Type/StructElem/S/Lbl/P 298 0 R/K[505]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Finding things)/K[521]/Pg 417 0 R>> endobj 294 0 obj -<</Type/StructElem/S/Code/P 297 0 R/K[508]/Pg 387 0 R>> +<</Type/StructElem/S/Lbl/P 299 0 R/K[522]/Pg 417 0 R>> endobj 295 0 obj -<</Type/StructElem/S/Code/P 297 0 R/K[512]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 298 0 R/K[525]/Pg 417 0 R>> endobj 296 0 obj -<</Type/StructElem/S/Code/P 297 0 R/K[514]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 298 0 R/K[529]/Pg 417 0 R>> endobj 297 0 obj -<</Type/StructElem/S/LBody/P 298 0 R/K[506 507 294 0 R 509 510 511 295 0 R 513 296 0 R 515 516 517 518 519 520 521 522]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 298 0 R/K[531]/Pg 417 0 R>> endobj 298 0 obj -<</Type/StructElem/S/LI/P 299 0 R/K[293 0 R 297 0 R]>> +<</Type/StructElem/S/LBody/P 299 0 R/K[523 524 295 0 R 526 527 528 296 0 R 530 297 0 R 532 533 534 535 536 537 538 539]/Pg 417 0 R>> endobj 299 0 obj -<</Type/StructElem/S/L/P 349 0 R/A[<</O/List/ListNumbering/Circle>>]/K[298 0 R]>> +<</Type/StructElem/S/LI/P 300 0 R/K[294 0 R 298 0 R]>> endobj 300 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Sessions)/K[523]/Pg 387 0 R>> +<</Type/StructElem/S/L/P 378 0 R/A[<</O/List/ListNumbering/Circle>>]/K[299 0 R]>> endobj 301 0 obj -<</Type/StructElem/S/Code/P 304 0 R/K[524]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Sessions)/K[540]/Pg 417 0 R>> endobj 302 0 obj -<</Type/StructElem/S/Code/P 304 0 R/K[526]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 305 0 R/K[541]/Pg 417 0 R>> endobj 303 0 obj -<</Type/StructElem/S/Code/P 304 0 R/K[530]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 305 0 R/K[543]/Pg 417 0 R>> endobj 304 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[301 0 R 525 302 0 R 527 528 529 303 0 R 531 532 533 534 535]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 305 0 R/K[547]/Pg 417 0 R>> endobj 305 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Config)/K[536]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[302 0 R 542 303 0 R 544 545 546 304 0 R 548 549 550 551 552]/Pg 417 0 R>> endobj 306 0 obj -<</Type/StructElem/S/Code/P 308 0 R/K[545]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Config)/K[553]/Pg 417 0 R>> endobj 307 0 obj -<</Type/StructElem/S/Code/P 308 0 R/K[550]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 309 0 R/K[562]/Pg 417 0 R>> endobj 308 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[537 538 539 540 541 542 543 544 306 0 R 546 547 548 549 307 0 R 551 552 553 554 555 556 557 558 559]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 309 0 R/K[567]/Pg 417 0 R>> endobj 309 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(Themes)/K[560]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[554 555 556 557 558 559 560 561 307 0 R 563 564 565 566 308 0 R 568 569 570 571 572 573 574 575 576]/Pg 417 0 R>> endobj 310 0 obj -<</Type/StructElem/S/Code/P 312 0 R/K[565]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(Themes)/K[577]/Pg 417 0 R>> endobj 311 0 obj -<</Type/StructElem/S/Code/P 312 0 R/K[571]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 313 0 R/K[582]/Pg 417 0 R>> endobj 312 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[561 562 563 564 310 0 R 566 567 568 569 570 311 0 R 572 573]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 313 0 R/K[588]/Pg 417 0 R>> endobj 313 0 obj -<</Type/StructElem/S/H2/P 349 0 R/T(The virtual filesystem (9P))/K[574]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[578 579 580 581 311 0 R 583 584 585 586 587 312 0 R 589 590]/Pg 417 0 R>> endobj 314 0 obj -<</Type/StructElem/S/Code/P 317 0 R/K[576]/Pg 387 0 R>> +<</Type/StructElem/S/H2/P 378 0 R/T(The virtual filesystem (9P))/K[591]/Pg 417 0 R>> endobj 315 0 obj -<</Type/StructElem/S/Code/P 317 0 R/K[578]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 318 0 R/K[593]/Pg 417 0 R>> endobj 316 0 obj -<</Type/StructElem/S/Code/P 317 0 R/K[581]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 318 0 R/K[595]/Pg 417 0 R>> endobj 317 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[575 314 0 R 577 315 0 R 579 580 316 0 R 582 583]/Pg 387 0 R>> +<</Type/StructElem/S/Code/P 318 0 R/K[598]/Pg 417 0 R>> endobj 318 0 obj -<</Type/StructElem/S/Span/P 349 0 R/A[<</O/Layout/Placement/Block>>]/K[584 585 586]/Pg 387 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[592 315 0 R 594 316 0 R 596 597 317 0 R 599 600]/Pg 417 0 R>> endobj 319 0 obj -<</Type/StructElem/S/TD/P 321 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[587]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 378 0 R/A[<</O/Layout/Placement/Block>>]/K[601 602 603]/Pg 417 0 R>> endobj 320 0 obj -<</Type/StructElem/S/TD/P 321 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[588 589]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 321 0 R/A[<</O/Layout/Placement/Block>>]/K[604]/Pg 417 0 R>> endobj 321 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[319 0 R 320 0 R]>> +<</Type/StructElem/S/Div/P 373 0 R/K[320 0 R]>> endobj 322 0 obj -<</Type/StructElem/S/TD/P 324 0 R/A[<</O/Table/Headers[]>>]/K[590]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[]>> endobj 323 0 obj -<</Type/StructElem/S/TD/P 324 0 R/A[<</O/Table/Headers[]>>]/K[591 592]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 324 0 R/A[<</O/Layout/Placement/Block>>]/K[605 606]/Pg 417 0 R>> endobj 324 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[322 0 R 323 0 R]>> +<</Type/StructElem/S/Div/P 373 0 R/K[323 0 R]>> endobj 325 0 obj -<</Type/StructElem/S/TD/P 328 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[593]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 326 0 R/A[<</O/Layout/Placement/Block>>]/K[607]/Pg 417 0 R>> endobj 326 0 obj -<</Type/StructElem/S/Code/P 327 0 R/K[595]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[325 0 R]>> endobj 327 0 obj -<</Type/StructElem/S/TD/P 328 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[594 326 0 R 596 597]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 328 0 R/A[<</O/Layout/Placement/Block>>]/K[608 609]/Pg 417 0 R>> endobj 328 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[325 0 R 327 0 R]>> +<</Type/StructElem/S/Div/P 373 0 R/K[327 0 R]>> endobj 329 0 obj -<</Type/StructElem/S/TD/P 331 0 R/A[<</O/Table/Headers[]>>]/K[598]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 330 0 R/A[<</O/Layout/Placement/Block>>]/K[610 611]/Pg 417 0 R>> endobj 330 0 obj -<</Type/StructElem/S/TD/P 331 0 R/A[<</O/Table/Headers[]>>]/K[599]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[329 0 R]>> endobj 331 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[329 0 R 330 0 R]>> +<</Type/StructElem/S/Span/P 332 0 R/A[<</O/Layout/Placement/Block>>]/K[612 613]/Pg 417 0 R>> endobj 332 0 obj -<</Type/StructElem/S/TD/P 335 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[600]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[331 0 R]>> endobj 333 0 obj -<</Type/StructElem/S/Code/P 334 0 R/K[602]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 334 0 R/A[<</O/Layout/Placement/Block>>]/K[614 615]/Pg 417 0 R>> endobj 334 0 obj -<</Type/StructElem/S/TD/P 335 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[601 333 0 R 603 604]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[333 0 R]>> endobj 335 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[332 0 R 334 0 R]>> +<</Type/StructElem/S/Span/P 336 0 R/A[<</O/Layout/Placement/Block>>]/K[616 617]/Pg 417 0 R>> endobj 336 0 obj -<</Type/StructElem/S/TD/P 339 0 R/A[<</O/Table/Headers[]>>]/K[605]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[335 0 R]>> endobj 337 0 obj -<</Type/StructElem/S/Code/P 338 0 R/K[611]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 338 0 R/A[<</O/Layout/Placement/Block>>]/K[618]/Pg 417 0 R>> endobj 338 0 obj -<</Type/StructElem/S/TD/P 339 0 R/A[<</O/Table/Headers[]>>]/K[606 607 608 609 610 337 0 R]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[337 0 R]>> endobj 339 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[336 0 R 338 0 R]>> +<</Type/StructElem/S/Span/P 340 0 R/A[<</O/Layout/Placement/Block>>]/K[619 620]/Pg 417 0 R>> endobj 340 0 obj -<</Type/StructElem/S/TD/P 343 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[612]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[339 0 R]>> endobj 341 0 obj -<</Type/StructElem/S/Code/P 342 0 R/K[614]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[]>> endobj 342 0 obj -<</Type/StructElem/S/TD/P 343 0 R/A[<</O/Table/Headers[]>><</O/Layout/BackgroundColor[0.89411765 0.9411765 0.92941177]>>]/K[613 341 0 R 615]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 343 0 R/A[<</O/Layout/Placement/Block>>]/K[621 622]/Pg 417 0 R>> endobj 343 0 obj -<</Type/StructElem/S/TR/P 344 0 R/K[340 0 R 342 0 R]>> +<</Type/StructElem/S/Div/P 373 0 R/K[342 0 R]>> endobj 344 0 obj -<</Type/StructElem/S/Table/P 349 0 R/K[321 0 R 324 0 R 328 0 R 331 0 R 335 0 R 339 0 R 343 0 R]>> +<</Type/StructElem/S/Span/P 345 0 R/A[<</O/Layout/Placement/Block>>]/K[623]/Pg 417 0 R>> endobj 345 0 obj -<</Type/StructElem/S/Span/P 349 0 R/A[<</O/Layout/Placement/Block>>]/K[616 617 618 619 620 621 622]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[344 0 R]>> endobj 346 0 obj -<</Type/StructElem/S/Code/P 348 0 R/K[623]/Pg 387 0 R>> +<</Type/StructElem/S/Span/P 347 0 R/A[<</O/Layout/Placement/Block>>]/K[624 625]/Pg 417 0 R>> endobj 347 0 obj -<</Type/StructElem/S/Code/P 348 0 R/K[625 626]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[346 0 R]>> endobj 348 0 obj -<</Type/StructElem/S/P/P 349 0 R/K[346 0 R 624 347 0 R 627 628]/Pg 387 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[]>> endobj 349 0 obj -<</Type/StructElem/S/Document/P 17 0 R/K[19 0 R 20 0 R 36 0 R 37 0 R 53 0 R 54 0 R 55 0 R 56 0 R 64 0 R 65 0 R 66 0 R 93 0 R 99 0 R 100 0 R 104 0 R 159 0 R 160 0 R 161 0 R 181 0 R 182 0 R 268 0 R 269 0 R 285 0 R 286 0 R 291 0 R 292 0 R 299 0 R 300 0 R 304 0 R 305 0 R 308 0 R 309 0 R 312 0 R 313 0 R 317 0 R 318 0 R 344 0 R 345 0 R 348 0 R]>> +<</Type/StructElem/S/Span/P 350 0 R/A[<</O/Layout/Placement/Block>>]/K[626 627]/Pg 417 0 R>> endobj 350 0 obj -[/ICCBased 407 0 R] +<</Type/StructElem/S/Div/P 373 0 R/K[349 0 R]>> endobj 351 0 obj -[387 0 R/XYZ 25.51181 645.8511 0] +<</Type/StructElem/S/Span/P 352 0 R/A[<</O/Layout/Placement/Block>>]/K[628]/Pg 417 0 R>> endobj 352 0 obj -[387 0 R/XYZ 25.51181 804.6376 0] +<</Type/StructElem/S/Div/P 373 0 R/K[351 0 R]>> endobj 353 0 obj -[387 0 R/XYZ 25.51181 463.1918 0] +<</Type/StructElem/S/Span/P 354 0 R/A[<</O/Layout/Placement/Block>>]/K[629 630]/Pg 417 0 R>> endobj 354 0 obj -[387 0 R/XYZ 25.51181 276.91058 0] +<</Type/StructElem/S/Div/P 373 0 R/K[353 0 R]>> endobj 355 0 obj -[387 0 R/XYZ 25.51181 110.019775 0] +<</Type/StructElem/S/Span/P 356 0 R/A[<</O/Layout/Placement/Block>>]/K[631 632 633 634 635]/Pg 417 0 R>> endobj 356 0 obj -[387 0 R/XYZ 211.1811 571.6865 0] +<</Type/StructElem/S/Div/P 373 0 R/K[355 0 R]>> endobj 357 0 obj -[387 0 R/XYZ 211.1811 392.59448 0] +<</Type/StructElem/S/Span/P 358 0 R/A[<</O/Layout/Placement/Block>>]/K[636 637]/Pg 417 0 R>> endobj 358 0 obj -[387 0 R/XYZ 211.1811 240.02875 0] +<</Type/StructElem/S/Div/P 373 0 R/K[357 0 R]>> endobj 359 0 obj -[387 0 R/XYZ 211.1811 133.09485 0] +<</Type/StructElem/S/Span/P 360 0 R/A[<</O/Layout/Placement/Block>>]/K[638]/Pg 417 0 R>> endobj 360 0 obj -[387 0 R/XYZ 211.1811 80.625244 0] +<</Type/StructElem/S/Div/P 373 0 R/K[359 0 R]>> endobj 361 0 obj -[387 0 R/XYZ 396.8504 804.6376 0] +<</Type/StructElem/S/Span/P 362 0 R/A[<</O/Layout/Placement/Block>>]/K[639 640]/Pg 417 0 R>> endobj 362 0 obj -[387 0 R/XYZ 396.8504 756.47675 0] +<</Type/StructElem/S/Div/P 373 0 R/K[361 0 R]>> endobj 363 0 obj -[387 0 R/XYZ 396.8504 698.34015 0] +<</Type/StructElem/S/Span/P 364 0 R/A[<</O/Layout/Placement/Block>>]/K[641]/Pg 417 0 R>> endobj 364 0 obj -[387 0 R/XYZ 396.8504 659.0976 0] +<</Type/StructElem/S/Div/P 373 0 R/K[363 0 R]>> endobj 365 0 obj -<</Type/ExtGState/ca 0.6509804>> +<</Type/StructElem/S/Span/P 366 0 R/A[<</O/Layout/Placement/Block>>]/K[642 643]/Pg 417 0 R>> endobj 366 0 obj -<</Type/ExtGState/ca 0.16078432>> +<</Type/StructElem/S/Div/P 373 0 R/K[365 0 R]>> endobj 367 0 obj -<</Type/ExtGState/ca 0.7490196>> +<</Type/StructElem/S/Span/P 368 0 R/A[<</O/Layout/Placement/Block>>]/K[644 645 646]/Pg 417 0 R>> endobj 368 0 obj -<</ProcSet[/PDF/Text/ImageC/ImageB]/ColorSpace<</c0 350 0 R>>/ExtGState<</g0 365 0 R/g1 366 0 R/g2 367 0 R>>/Font<</f0 369 0 R/f1 372 0 R/f2 375 0 R/f3 378 0 R/f4 381 0 R/f5 384 0 R>>>> +<</Type/StructElem/S/Div/P 373 0 R/K[367 0 R]>> endobj 369 0 obj -<</Type/Font/Subtype/Type0/BaseFont/FVNFXV+LibertinusSerif-Bold-Identity-H/Encoding/Identity-H/DescendantFonts[370 0 R]/ToUnicode 389 0 R>> +<</Type/StructElem/S/Span/P 370 0 R/A[<</O/Layout/Placement/Block>>]/K[647 648]/Pg 417 0 R>> endobj 370 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/FVNFXV+LibertinusSerif-Bold/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 371 0 R/DW 0/W[0 0 500 1 1 581 2 2 505.99997 3 3 428 4 4 561 5 5 489 6 6 427 7 7 652 8 8 619 9 9 250 10 10 905 11 11 551 12 12 598 13 13 706 14 14 256 15 15 325 16 16 358 17 17 641 18 18 244 19 19 456 20 20 322 21 21 613 22 22 616 23 23 561 24 24 521 25 25 736 26 26 558 27 27 716 28 28 529 29 29 777 30 30 716 31 31 545 32 32 504 33 33 315 34 34 514 35 35 614 36 36 315]>> +<</Type/StructElem/S/Div/P 373 0 R/K[369 0 R]>> endobj 371 0 obj -<</Type/FontDescriptor/FontName/FVNFXV+LibertinusSerif-Bold/Flags 131078/FontBBox[0 -238 893 720]/ItalicAngle 0/Ascent 894/Descent -246/CapHeight 645/StemV 168.6/CIDSet 388 0 R/FontFile3 390 0 R>> +<</Type/StructElem/S/Span/P 372 0 R/A[<</O/Layout/Placement/Block>>]/K[649 650 651]/Pg 417 0 R>> endobj 372 0 obj -<</Type/Font/Subtype/Type0/BaseFont/QUEAPS+LibertinusSerif-Italic-Identity-H/Encoding/Identity-H/DescendantFonts[373 0 R]/ToUnicode 392 0 R>> +<</Type/StructElem/S/Div/P 373 0 R/K[371 0 R]>> endobj 373 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/QUEAPS+LibertinusSerif-Italic/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 374 0 R/DW 0/W[0 0 500 1 1 486 2 2 389 3 3 783 4 4 401 5 5 190 6 6 353 7 7 250 8 8 307 9 9 477 10 10 518 11 11 489 12 12 519 13 13 357 14 14 478 15 15 521 16 16 447 17 17 219 18 18 266 19 19 276 20 20 475 21 21 486 22 22 503.00003 23 23 489 24 24 472 25 25 564 26 26 444 27 27 499]>> +<</Type/StructElem/S/Div/P 378 0 R/K[321 0 R 322 0 R 324 0 R 326 0 R 328 0 R 330 0 R 332 0 R 334 0 R 336 0 R 338 0 R 340 0 R 341 0 R 343 0 R 345 0 R 347 0 R 348 0 R 350 0 R 352 0 R 354 0 R 356 0 R 358 0 R 360 0 R 362 0 R 364 0 R 366 0 R 368 0 R 370 0 R 372 0 R]>> endobj 374 0 obj -<</Type/FontDescriptor/FontName/QUEAPS+LibertinusSerif-Italic/Flags 131142/FontBBox[-78 -238 786 700]/ItalicAngle -12/Ascent 894/Descent -246/CapHeight 645/StemV 95.4/CIDSet 391 0 R/FontFile3 393 0 R>> +<</Type/StructElem/S/Span/P 378 0 R/A[<</O/Layout/Placement/Block>>]/K[652 653 654 655 656 657 658]/Pg 417 0 R>> endobj 375 0 obj -<</Type/Font/Subtype/Type0/BaseFont/IUBRFU+LibertinusSerif-Regular-Identity-H/Encoding/Identity-H/DescendantFonts[376 0 R]/ToUnicode 395 0 R>> +<</Type/StructElem/S/Code/P 377 0 R/K[659]/Pg 417 0 R>> endobj 376 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/IUBRFU+LibertinusSerif-Regular/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 377 0 R/DW 0/W[0 0 500 1 1 390 2 2 447 3 3 264 4 4 428 5 5 316 6 6 220 7 7 250 8 8 457 9 9 542 10 10 505.99997 11 11 310 12 12 504 13 13 531 14 14 538 15 15 519 16 16 220 17 17 702 18 18 500 19 19 236 20 20 515 21 21 372 22 22 747 23 23 271 24 24 493 25 25 560 26 26 661 27 27 587 28 28 528 29 29 268 30 30 490 31 31 512 32 32 596 33 33 323 34 34 424 35 35 790 36 36 497 37 37 695 38 38 363 39 40 298 41 41 485 42 42 338 43 43 646 44 44 236 45 45 1130 46 46 685 47 47 597 48 53 465 54 54 730 55 55 839 56 56 272 57 57 297 58 58 557 59 59 503.00003 60 60 582 61 61 541]>> +<</Type/StructElem/S/Code/P 377 0 R/K[661 662]/Pg 417 0 R>> endobj 377 0 obj -<</Type/FontDescriptor/FontName/IUBRFU+LibertinusSerif-Regular/Flags 131078/FontBBox[-48 -238 1072 708]/ItalicAngle 0/Ascent 894/Descent -246/CapHeight 658/StemV 95.4/CIDSet 394 0 R/FontFile3 396 0 R>> +<</Type/StructElem/S/P/P 378 0 R/K[375 0 R 660 376 0 R 663 664]/Pg 417 0 R>> endobj 378 0 obj -<</Type/Font/Subtype/Type0/BaseFont/QWMRBP+DejaVuSansMono/Encoding/Identity-H/DescendantFonts[379 0 R]/ToUnicode 398 0 R>> +<</Type/StructElem/S/Document/P 17 0 R/K[19 0 R 20 0 R 36 0 R 37 0 R 53 0 R 54 0 R 55 0 R 56 0 R 64 0 R 65 0 R 66 0 R 93 0 R 99 0 R 100 0 R 105 0 R 160 0 R 161 0 R 162 0 R 182 0 R 183 0 R 269 0 R 270 0 R 286 0 R 287 0 R 292 0 R 293 0 R 300 0 R 301 0 R 305 0 R 306 0 R 309 0 R 310 0 R 313 0 R 314 0 R 318 0 R 319 0 R 373 0 R 374 0 R 377 0 R]>> endobj 379 0 obj -<</Type/Font/Subtype/CIDFontType2/BaseFont/QWMRBP+DejaVuSansMono/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 380 0 R/DW 0/CIDToGIDMap/Identity/W[0 82 602.0508]>> +<</Type/Annot/Subtype/Link/Rect[133.98361 58.145325 172.33961 67.41614]/Border[0 0 0]/A<</Type/Action/S/URI/URI(https://docs.helix-editor.com/keymap.html)>>/F 4/StructParent 0/Contents(https://docs.helix-editor.com/keymap.html)>> endobj 380 0 obj -<</Type/FontDescriptor/FontName/QWMRBP+DejaVuSansMono/Flags 131077/FontBBox[0 -235.83984 602.0508 765.1367]/ItalicAngle 0/Ascent 759.7656/Descent -240.23438/CapHeight 759.7656/StemV 95.4/CIDSet 397 0 R/FontFile2 399 0 R>> +[/ICCBased 437 0 R] endobj 381 0 obj -<</Type/Font/Subtype/Type0/BaseFont/OTVRNR+NewCMMath-Regular-Identity-H/Encoding/Identity-H/DescendantFonts[382 0 R]/ToUnicode 401 0 R>> +[417 0 R/XYZ 25.51181 645.8511 0] endobj 382 0 obj -<</Type/Font/Subtype/CIDFontType0/BaseFont/OTVRNR+NewCMMath-Regular/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 383 0 R/DW 0/W[0 0 280 1 1 652 2 2 626]>> +[417 0 R/XYZ 25.51181 804.6376 0] endobj 383 0 obj -<</Type/FontDescriptor/FontName/OTVRNR+NewCMMath-Regular/Flags 131076/FontBBox[56 -213 596 725]/ItalicAngle 0/Ascent 806/Descent -194/CapHeight 683/StemV 95.4/CIDSet 400 0 R/FontFile3 402 0 R>> +[417 0 R/XYZ 25.51181 463.1918 0] endobj 384 0 obj -<</Type/Font/Subtype/Type0/BaseFont/IWSMWX+DejaVuSansMono-Bold/Encoding/Identity-H/DescendantFonts[385 0 R]/ToUnicode 404 0 R>> +[417 0 R/XYZ 25.51181 276.91058 0] endobj 385 0 obj -<</Type/Font/Subtype/CIDFontType2/BaseFont/IWSMWX+DejaVuSansMono-Bold/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 386 0 R/DW 0/CIDToGIDMap/Identity/W[0 6 602.0508]>> +[417 0 R/XYZ 25.51181 110.019775 0] endobj 386 0 obj -<</Type/FontDescriptor/FontName/IWSMWX+DejaVuSansMono-Bold/Flags 131077/FontBBox[47.851562 -176.75781 584.96094 759.7656]/ItalicAngle 0/Ascent 759.7656/Descent -240.23438/CapHeight 759.7656/StemV 168.6/CIDSet 403 0 R/FontFile2 405 0 R>> +[417 0 R/XYZ 211.1811 571.6865 0] endobj 387 0 obj -<</Type/Page/Resources 368 0 R/MediaBox[0 0 595.2756 841.8898]/StructParents 0/Parent 1 0 R/Contents 406 0 R>> +[417 0 R/XYZ 211.1811 364.07715 0] endobj 388 0 obj +[417 0 R/XYZ 211.1811 192.96985 0] +endobj +389 0 obj +[417 0 R/XYZ 211.1811 86.03589 0] +endobj +390 0 obj +[417 0 R/XYZ 396.8504 804.6376 0] +endobj +391 0 obj +[417 0 R/XYZ 396.8504 765.3951 0] +endobj +392 0 obj +[417 0 R/XYZ 396.8504 717.2342 0] +endobj +393 0 obj +[417 0 R/XYZ 396.8504 659.0976 0] +endobj +394 0 obj +[417 0 R/XYZ 396.8504 619.8551 0] +endobj +395 0 obj +<</Type/ExtGState/ca 0.6509804>> +endobj +396 0 obj +<</Type/ExtGState/ca 0.16078432>> +endobj +397 0 obj +<</Type/ExtGState/ca 0.7490196>> +endobj +398 0 obj +<</ProcSet[/PDF/Text/ImageC/ImageB]/ColorSpace<</c0 380 0 R>>/ExtGState<</g0 395 0 R/g1 396 0 R/g2 397 0 R>>/Font<</f0 399 0 R/f1 402 0 R/f2 405 0 R/f3 408 0 R/f4 411 0 R/f5 414 0 R>>>> +endobj +399 0 obj +<</Type/Font/Subtype/Type0/BaseFont/FVNFXV+LibertinusSerif-Bold-Identity-H/Encoding/Identity-H/DescendantFonts[400 0 R]/ToUnicode 419 0 R>> +endobj +400 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/FVNFXV+LibertinusSerif-Bold/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 401 0 R/DW 0/W[0 0 500 1 1 581 2 2 505.99997 3 3 428 4 4 561 5 5 489 6 6 427 7 7 652 8 8 619 9 9 250 10 10 905 11 11 551 12 12 598 13 13 706 14 14 256 15 15 325 16 16 358 17 17 641 18 18 244 19 19 456 20 20 322 21 21 613 22 22 616 23 23 561 24 24 521 25 25 736 26 26 558 27 27 716 28 28 529 29 29 777 30 30 716 31 31 545 32 32 504 33 33 315 34 34 514 35 35 614 36 36 315]>> +endobj +401 0 obj +<</Type/FontDescriptor/FontName/FVNFXV+LibertinusSerif-Bold/Flags 131078/FontBBox[0 -238 893 720]/ItalicAngle 0/Ascent 894/Descent -246/CapHeight 645/StemV 168.6/CIDSet 418 0 R/FontFile3 420 0 R>> +endobj +402 0 obj +<</Type/Font/Subtype/Type0/BaseFont/QUEAPS+LibertinusSerif-Italic-Identity-H/Encoding/Identity-H/DescendantFonts[403 0 R]/ToUnicode 422 0 R>> +endobj +403 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/QUEAPS+LibertinusSerif-Italic/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 404 0 R/DW 0/W[0 0 500 1 1 486 2 2 389 3 3 783 4 4 401 5 5 190 6 6 353 7 7 250 8 8 307 9 9 477 10 10 518 11 11 489 12 12 519 13 13 357 14 14 478 15 15 521 16 16 447 17 17 219 18 18 266 19 19 276 20 20 475 21 21 486 22 22 503.00003 23 23 489 24 24 472 25 25 564 26 26 444 27 27 499]>> +endobj +404 0 obj +<</Type/FontDescriptor/FontName/QUEAPS+LibertinusSerif-Italic/Flags 131142/FontBBox[-78 -238 786 700]/ItalicAngle -12/Ascent 894/Descent -246/CapHeight 645/StemV 95.4/CIDSet 421 0 R/FontFile3 423 0 R>> +endobj +405 0 obj +<</Type/Font/Subtype/Type0/BaseFont/URHWUA+LibertinusSerif-Regular-Identity-H/Encoding/Identity-H/DescendantFonts[406 0 R]/ToUnicode 425 0 R>> +endobj +406 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/URHWUA+LibertinusSerif-Regular/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 407 0 R/DW 0/W[0 0 500 1 1 390 2 2 447 3 3 264 4 4 428 5 5 316 6 6 220 7 7 250 8 8 457 9 9 542 10 10 505.99997 11 11 310 12 12 504 13 13 531 14 14 538 15 15 519 16 16 220 17 17 702 18 18 500 19 19 236 20 20 515 21 21 372 22 22 747 23 23 271 24 24 493 25 25 560 26 26 661 27 27 587 28 28 528 29 29 268 30 30 490 31 31 512 32 32 596 33 33 323 34 34 424 35 35 790 36 36 497 37 37 695 38 38 363 39 40 298 41 41 485 42 42 338 43 43 646 44 44 236 45 45 1130 46 46 685 47 47 597 48 53 465 54 54 730 55 55 839 56 56 557 57 57 272 58 58 297 59 59 503.00003 60 60 582 61 61 541 62 62 749 63 63 550]>> +endobj +407 0 obj +<</Type/FontDescriptor/FontName/URHWUA+LibertinusSerif-Regular/Flags 131078/FontBBox[-48 -238 1072 708]/ItalicAngle 0/Ascent 894/Descent -246/CapHeight 658/StemV 95.4/CIDSet 424 0 R/FontFile3 426 0 R>> +endobj +408 0 obj +<</Type/Font/Subtype/Type0/BaseFont/DYDMIL+DejaVuSansMono/Encoding/Identity-H/DescendantFonts[409 0 R]/ToUnicode 428 0 R>> +endobj +409 0 obj +<</Type/Font/Subtype/CIDFontType2/BaseFont/DYDMIL+DejaVuSansMono/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 410 0 R/DW 0/CIDToGIDMap/Identity/W[0 85 602.0508]>> +endobj +410 0 obj +<</Type/FontDescriptor/FontName/DYDMIL+DejaVuSansMono/Flags 131077/FontBBox[-9.765625 -250 611.8164 937.9883]/ItalicAngle 0/Ascent 759.7656/Descent -240.23438/CapHeight 759.7656/StemV 95.4/CIDSet 427 0 R/FontFile2 429 0 R>> +endobj +411 0 obj +<</Type/Font/Subtype/Type0/BaseFont/OTVRNR+NewCMMath-Regular-Identity-H/Encoding/Identity-H/DescendantFonts[412 0 R]/ToUnicode 431 0 R>> +endobj +412 0 obj +<</Type/Font/Subtype/CIDFontType0/BaseFont/OTVRNR+NewCMMath-Regular/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 413 0 R/DW 0/W[0 0 280 1 1 652 2 2 626]>> +endobj +413 0 obj +<</Type/FontDescriptor/FontName/OTVRNR+NewCMMath-Regular/Flags 131076/FontBBox[56 -213 596 725]/ItalicAngle 0/Ascent 806/Descent -194/CapHeight 683/StemV 95.4/CIDSet 430 0 R/FontFile3 432 0 R>> +endobj +414 0 obj +<</Type/Font/Subtype/Type0/BaseFont/RDRXIL+DejaVuSansMono-Bold/Encoding/Identity-H/DescendantFonts[415 0 R]/ToUnicode 434 0 R>> +endobj +415 0 obj +<</Type/Font/Subtype/CIDFontType2/BaseFont/RDRXIL+DejaVuSansMono-Bold/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement 0>>/FontDescriptor 416 0 R/DW 0/CIDToGIDMap/Identity/W[0 13 602.0508]>> +endobj +416 0 obj +<</Type/FontDescriptor/FontName/RDRXIL+DejaVuSansMono-Bold/Flags 131077/FontBBox[42.96875 -208.00781 584.96094 759.7656]/ItalicAngle 0/Ascent 759.7656/Descent -240.23438/CapHeight 759.7656/StemV 168.6/CIDSet 433 0 R/FontFile2 435 0 R>> +endobj +417 0 obj +<</Type/Page/Resources 398 0 R/MediaBox[0 0 595.2756 841.8898]/StructParents 1/Tabs/S/Parent 1 0 R/Contents 436 0 R/Annots[379 0 R]>> +endobj +418 0 obj <</Length 13/Filter/FlateDecode>> stream x������ endstream endobj -389 0 obj +419 0 obj <</Length 515/Type/CMap/Filter/FlateDecode/WMode 0>> stream x�m�M��0����C$�@�8�,!A ��вj�!h$bGNr��W�k�U�A�g���?ޏӍ2'�&?}pg[�4)� w���+�bu�vKj��:�)?���0<��:(���/e˗Z%�5(��4A~����4����X�u#���/�]m��� �Z����נ�ݚ��=�k���D��nKRu�{rߪ)[��x�zn�l(A�Z�ID}��z{��k��y��m�/4�7�-x���c�$�*k���Q��l�"/�X��-}�Z�D�_��C�+��kˊm�/��bM��(��X�x�b��\�)�K�״"kG�Q��$h��4�A)2P�h�3���Z8����h*@9��v�f���Q�ؗ;��"C�~i*D�� �φc�sc��3���t�c��;f�z�����3�8ǝ��1�1���u���$<��\�S� �5%�s G�p�'a��E<f��eݻ�q��Z��e��w��{���=�[�2�+ endstream endobj -390 0 obj +420 0 obj <</Length 4399/Filter/FlateDecode/Subtype/CIDFontType0C>> stream x��Wy|Su�O(ͽ@'h/)�^��*� @@ -1197,20 +1287,20 @@ Ií6}x���aC|Ӡ=.n�[SѓU(�a��Qw����64�]14q������h���SrF;�v�sS�*��ʔ 6�Bc�#�n���g��W�W�M������.��=�@<�<9���IW�8G�W�/��w�dd�Y�}{H�{oS=��R��,|D6,~��s c�����P҄��Qd(6�,˲�z�j)M�Ϊ�zc��?��uu��#�z��ѩ�_�J��bߦ�ߑS==��ܾnK]kh1W�� �P����x���>p���� endstream endobj -391 0 obj +421 0 obj <</Length 12/Filter/FlateDecode>> stream x����� endstream endobj -392 0 obj +422 0 obj <</Length 463/Type/CMap/Filter/FlateDecode/WMode 0>> stream x�m�Mo�0����ك����@mEjH�8�CM�{&�$�l˘C���'�V{ �ׯ�I�j1
���Dy��K0V����U�Kk�8O�1���W� endstream endobj -393 0 obj +423 0 obj <</Length 3652/Filter/FlateDecode/Subtype/CIDFontType0C>> stream x���{XW��q *W�YuFgl_��}m�j�ꪈ�w��"��@�%�I&��r�@H��&wP�x�^i��n�־]}���'�q���j�����3s�yf��~?��9L�ĉ&�9}sr<7K��!����J�-� <����Џ�gB1��P6��ϯ�!�����f��-�f3����f0�ӧ�f0��C�t���
�@蛌 &3��)"��ݐ��&s#���Yɇ��s^���h��w-��+�;���l��p�s"D�$~V�Bc��@�.�j���a�5W�3�V�ȋ�?��h�}69�Ǔ�N2�N�<4���`2Ƭ��^3��r3]�� c� @@ -1230,122 +1320,147 @@ TI��T�n�dL�*�UjwQ��g(�6�։�x|�ՙ��})ykc�}��{Щ<�/F��p�5�Qa��U���&w9�rRJ+ ^dGYa
��B/� �����f�K��;n��c��]��Ȝ�'۠I@�e��5���#"v�KK�v�O[.Y�����W�t*�+'���bz����C�n�ɦ'�뀰�k`�i� endstream endobj -394 0 obj -<</Length 13/Filter/FlateDecode>> +424 0 obj +<</Length 11/Filter/FlateDecode>> stream -x���� +x��� endstream endobj -395 0 obj -<</Length 623/Type/CMap/Filter/FlateDecode/WMode 0>> +425 0 obj +<</Length 633/Type/CMap/Filter/FlateDecode/WMode 0>> stream -x�m�Io�0���Ӄ�䐚���$v��qОmq� -�)A���� �� ���qf8��L�mn\���S�;���|�|�vI���z:�_��st�S��#-�o�$M���s���ȇ�%�����=&i�ь�<�+,P�Dk�~l���$Mq?4���N��ɻe{�d&=h�ַ��G�7��҉v�o�
��E�����b��4�|\�}KYn�$��h�·f�]Ec��x��k�o����f�7S�}r0I*��w��,��l�L3�� -%鯥�SDz���s��B�b�:�m���8�WJ��WUU-B�⅔����m����*�"*U�CY�%T%�9�2�"*#�%���E����z�z��]� -�%T�B?q���-T���p -|� -|���(�R�B2�O2�����1�s
�\�����t`4a���X�Q��x�ʨK����g 2#s\A 'Nـ3�tL�4�12G80�4pg���k0`4�����h�yd�w�7`�p��9�,-�Y�Y�Y�Y���9J�,�>/s�@d�����9�݂/�_&��W�3�N��q��j����.cxs.��������x�ýn<_ޮ��BU����������o� +x�m�Io�0���Ӄ�䐚��$$���qОq� +�)A���� �����qf8��L�mn]��7���wک��f��4]��t`?�0;v��pO]����X/�4]��kr|��_��I=h1
c{H��������@��������4���д��t��+��!������[��i�x�K'�}m�5�(*�ևm�7�a����Z��rS'�DD�w�7���*�&�;D^{�}��tu2�-���IRq����g�e{`� �yU(I_�>����ϭ;
�u�x�5�[���A)���PUU5��e���϶��zNJ�v���ȡ,�*���uT���JAݢNC�A���d�'�jUA-�O�����C?��A
��h�+��g��W�A ��_)u�+$S�$S��K�9�k0�
�sӁф-�c F
��)*��]�8
8
8K�9�%�pb��N�Ns���s�Nw�9�F#��I�V�GF}~�s5`�Ad�h�̂Ϣ�b�V�Q�2(|
|^,�1�_�|��)�IX�e`��+ř|���1S�o5�ф�FF���S�a���=:��������g �����]��.Tſ� ��֠^���~u� endstream endobj -396 0 obj -<</Length 6760/Filter/FlateDecode/Subtype/CIDFontType0C>> +426 0 obj +<</Length 6832/Filter/FlateDecode/Subtype/CIDFontType0C>> stream -x��YxSe�o��\��^�WP�"�(� K�lJ�2Jw�{$�I�̛�ٌt�3�t�d�e�R��x/����B�ߧ~���<y2�ys�s~���߹,�Q�|X,��{�A� I�1ɉkC"�^^��=���B�y\7��<1և�C�t�����&Y�%���<����3� �臟�������_�<�i�ˍ��|�,W�lnHlP蒐И�Ȥ���q� ��IO��:�թ/O�2��'�E�>9�֓�bw�'=979)"6!q���>,����ܼb<bkȫ�qQ��G�f���n����c�-c���>,���=��t�w^ߞ�>� }f{�[�s���U��� -(fOg�Ϩ^λ+wO�������<�8z��1����{(��_U�D���Dz��I��>��G�=rQ���_����ѷ-~��c�<��ַe�����˸�M|�x��?�I�!���=���|����x��a�Fy4�W��p���q��F�]��G�}���
,�q�xh3���`��u� ->$V��T���E)ڜL)�3lgz��x�d���Iu��1��YI�T~�A���D�y�������0"p^�YGB�� &w��j -��dj�=�I�;K�d��B�8>�J�9y�Bo४���8rr������%����]t�P�f�Ƌ�`���3���z�٭�]4���ď�w�������Y��������)���a#�.�F¥Q�����+�k_Q�$oV<�%«���k�h�������$�F'%�O��x5�S:Ҡ1�H�Ag�g"�>}'ݚ<�kG~��`��'��Q��oM�����8Z�[X��{R�>P����a�ا0ZD����/��b����%���lwR�}�nZ��hE�:�&5j�ҁ3���Ό������Kxӥ��C�ty���EW
ך1ۛ�)��z�� ��V��2�S<�Dt�v�����eE�}��'��5��eƋ8���MM�+j�uā���V������8v�֜Nڲ!zk0��+�jm�c_����vw�T��G�1�Ш�Sa*%)V�qX�s��|R���o��blŔ'VW��WW'���$&ƐxN����j�γ�;���pA��)�Eh=��h=�O�q0�W���#��N~����!���h+Z4m"�"��A�����~(� V�Uqg�jua��s�æs�}�Y�g��1QIqq�3�0.> -2��N9s�;JWSg�|ů<�*��Zc�#�����Y$vz����-�����������r�.�]&��>LM�j):CN������R��QDe�W)Z�����ٙYSC�,��y�Ţ�6S�Yg�1On'��S�ѻD{�6��ʐO��ӫ��dGf<>B��oV��WT7��)'��=�ɛS�������}�o�N -�g�[����-����s���yAg==.�^�9�����uQaU^�������F���/�4߇���N�c����RĮ�i���ϡT_Ez�&�t*����Q�0�7�����8F2h�V�e�^T�k�l��JwHc3��YfvB�� #b2��ĥ�Nw�Ǎ� -�Tn���3R�k��*aݺĆ��Hn�7Ze�5dz��?_�j�7$����L�],2���Vz3�yD���3�� SOP��Lia������bY�u��W�r �@��0��7~��B/������9��-L��sq�6:::z���5UiUAW�kR�4j���&� ސ��Ў��j)S���Tѻ����,ܘc,���k�\��6g�����ݩ�.����.��j�0|0_��6������rS��a5>ޣ'::v�C>vmN�ڮI�\:�W!W39v�`��+`���Q��~���o.ha���W=�npѻ�|(�+�:��i�9�lG���}�C)���a�һ���Z�t�(Ҙ`��G��ڤ1�p�No4�W���k�u�O�c���0&i���ĈliRLTd|Jrz�4EÇ�x�w#�헿�6�y_���x�v�^�]?��Dz`��z.�������߮��i-��ǫ�j� -�'��u5���� -pz]g.���U�i1*�␕%����"IU ���1[�w&R��9�_��D�`YBqm�{(��J��KXPˆ�۸(������r�Q]}��w#����)�����ƚ>�,i�j-EoUEdo��Z���TmQ
�|!���Y��R�F�+rU$G5���}���F�T/%��̘���dz<�=��/��?�*�Fܨ2(HU�6�@˸;�&S% -kb������0�iH�BA���q�,I��G+�
��f\LMk���j�l,l������ 3�[T����=�9eC0�����m��r�t�垮�|om�Ʈ�/�hy�F������@� -�V�R�0��n�Su5�zc+��-<�0r���5~��DX��AE�VN��fc#q�7�(odaB������s�gĊ�C;�Gע�%�z�N�B�T���f#>�� -z��a0��� -wK�.p(�u���hi�놂��(�v�����8lj��B�A������������S�
��V����,<�H�O������Əx�e4mz��l�:*��>��0z.�� -�2U_���W4�en g$o�N%&��+@�h��.�<��p�vzN�����6���\&e���������鈃�O��ؐ��XJ�˳B,NI�2�0��u|�5�e������-�Z��5��� -�,9�ȟ@�nqG�MR�`t�||ܱ���1|���2n\b{��[N���$��
thX���V�ut^��^Y�ac�_T�^��in����A� -�w���45u�ǵh���Ş]0q���a4��«���/_dzKM/TM���������b�g���}S���S���E�5r�j�ZKh5�\
�-C�=&4Io����f�b[|w�r�4a�j��ގ(/w�SKL�Z�>V����s!�n!Ga0� �ђk�0?H����Ԁ�z�
D��a�w "��!_5�Q�e�(H�\Z�L�ĒԘ���>Cm��\uV����_�N���Uv�k̈́�?� [����T��?��6z3�c���䷝�f���ϙA�M��$�X�6J��^����%���{��g�g -��Q�]o3�3�ﴹ|=�hH�&-�N$P.7z����f�3.vr��iuT~O�'��r�T���ϗD�z�@|����N -��]2$m5Pf�Sg6���tU=�ӗ{��f�N���h�� &�{S�=�z�D�p���3�=b{%����H}����2�2G�Cbg�R�i.�tg�u;��>�|'��OW�̶" -kەgԋ�D�(Qi�1#�Π4^*��R�Ҥ8:�X��x�=��QX[M�4��TݻM�P�� ����#oF������~n)�n�'O�ﶖ��L���l)�DiAAi��ܰ5��#)�fy����D\�B*��X��&��N�\P]���b̺7I -@N�t�z�е�LS_�F�
����D�B� -Qv8"��Q����<��`.!�9��DCqb���X���v^o`�di]`����Ӟ����_<��?�i�#N�Y�D�{�y��rMK�`̥B~C˩�U�`;�?w��{ȻT+�.h8y�x�����)�_��u� +x��Y x��nY�2�3��."��\�MV�)�R��/I�$m��dm��Mi隮)�;X@PQvIJ/*"�O����O +]������&�9_�w����gX^#Fx�X,�"C�#��ք�G���:$,)r[��n���v4�~f�9ҋ�jᅫ�=�M�<�Cܽ�y��˫{�3^^���?�����'x.�<�9Ͽ��'z�Y,�`�������!щ�)�bbS�#���
��2��)�M�<�qk�C�
�5ne|�����qs��c�&yy=���%������ k}n����l<r$����G��G5���g���G��byyyy���� F�e<�������k�g�e^WYKX� ~$��"�4�����ϱpg���y���?�ޣ #Ǐ������Ǣ�UP9F8�,}|�7���w/��K��(|R�'�{R��O=y�ן��Y��<v��:�5\K�$>~:��g.��ɯ���"��������mK��~����V�Y~O�=�暈0�0�9���n���|�T0�ǹg�M�W�f��7�4M�Ԉ�/;�b��0�l{'�B�F��m��je�Vc6i5fJ^Q�j$��\��э���V�bgP~/�Ұ���`�۹�IQL|̦o�52N>Va����#�,�_:�yvu1�X�o���XMpR�MF%��Q��� +S2�P��d]�����K���~�0$4:m���I�����8k8v��v)�+D��8�Ыk�|�!TP]G�I����(�Ua�0|����)>n)#��D�d��RJ�Z�EwX�b�}X�M�I��դB���z��q��h���L&�Ca�/�K�q�6v���%�*}/����d��L +�A�I= oY���d5^a�'|-TY�
YkD@R +y�,�����)x�fV̝>�wu�]���ȑk��I�i�
��mk��HE�Z��ɩ"��Ju�����W���!K +8:X&D>�L�<[A��"c�
I��6G��bJ )���Ջ����>��N�pW��(� +��+4�J+s5}6#��Z��Q��t +��J�r��x�e��|T3.�媦���(3\�a;��s,dcS[i3Q��L�SV�.6 +G�z�S�J�Vd�,R˸\
�E�&�Ci�1J=����Uu&����p;�qM���_�!���aKu���W �����B���c�|}BN��Q����(-��?l6��� +�1��wo�
�s��z�VO�Q۴���<�F#'U��ۉ�[�B������sp4��7���*�K\]���0Y��!!w��H�'|�|���s�;�������<3���K��#qR��O7����]�@�<�p�z�¤�2gu�$<�Lɱe8��2GI��HT@���C�w&�E������P2C�4��j(������<����".� �w��g�\�vlN<�80�Ӯ��:�mO�'��_V�c�ž��dX@�p� +�U�mց����貄���������脄hR +�-��)9����/o���n�4R�N�o��۬����9��3�����Ϻ���vx
f�{�<���������s����^Q�;���� +��Hb� +�2Lj��"rOr��0�g�0�
[��V���鰐X&n`�J���O�/|2L9 ++a�1����1��K�& +���-��=���ItTԶ���Qɢ3��A�>�x�6�1b|�;t�}�������C*{t�S�������:�v�L�d +:�c��X�^l֊���b�~x���Ş����>�6|�%
J}6#
�t�ҪX�i�z�`+����V�Y�O=X�dw�0�,�����Q&��%1gBLB%X.�S��Ԟ*��"�`�0�M + +��<�v�&�%ݦ��u�Uf�*;a2Y-9�ݤ�e�wV+ꉟ`�
xo�y+ $5&�2G +wT��缌����)*-S��9�\)0���\1(뼿��>�{�'@a<���?@ +����K���pm8��Yw�hk�40��`u������owNڼ6�?�ڶ1k�L<}���瞪/V�����mX4�dw�B^M�x=�6x��v����f�q���7Y����u�2��ņ����|�Y=��M�F:88� ��C�B�4��P +���_Ŭۗ��ғ���F�����#��2�T'���CW�'>���P�)����パ�Bo�C�6
��=c�0u� +�xB�q_@�͜�ϒh�J\���'�X8�����5w�5($: �5fDǯ%��c�X��o�7>���_��1��^N*c4�Z��!1�)H���}������X̂����Ai����Tw5�ĸ\5���Rd;_�4�Kj��ʄE�˛���U
���~�I� +�
�,����i�h;���-��h*MZD����2����{�۵�m��s���~�Z�Pj,����Z?b�_Ħm֥T*䴝/X=���(�tO~�2ID��E�}҂�ڴ����'�Se�g~���t8�}{�P��OaN+YO�c>�&�"���M�f +��g�{l���C
Q�=�����8!t�{�������z��&rr�&Ca܃h�="D���F��ini��
��N�>擕+�$���3nY�b��.��T�t���&CA� @�$�[
�O`瘸ߢr� +ŢE�����7���e�
>���Z�ߋ�)L�:�ھ��ڟ9 &�WU� +��k�������\
|��2m�.�F�t6�f�ҕv�o]Z��U�t�l�{C�e���ۛ�����,�鈛UH�����������ht4�SG ���T.�8�4�C(�FCS�-2?�?_e��v;v��}�gD�����'��J3{�.��q5��݃d9���L�8ݧ�,;ˆOS��sX�K5Z�6b]���:�AfQ���KM�D�>!�B}�i��Z�.�����l���[D�����{��9gf_��װ#���BQq�����4GcҘI�Ƭ����N5�Ŀ�4�o� +r�\v����W��]- ��-���z��V3u2
~jj|�p;�5�oq�����7��KbG{���`���w��bo8y�'a���
��,/I'3S�EDrr�8�r��ǵo��֢�hD@h�<�*�Uc������Z(�l�Q����P��U�#B�t�p*�pJ�5�#=�Ey"�;܄�e_��s!F8
ڸ��f]��qvp�J�RE}0����ѳ�t�)�����C����e\L{s];܍����//��nU��zZ�����\8#�}�L�ջ;�Y�W!�*�e³�� �>��փT}ܶj_����H�q��TLe]F3ap_(�v�&��=�㯫?�XONOژ�BL��{W�>��F=Xݻ�,�r�5�G��>)lu�-ݰj�qGWX��%�N�!;%6|}��" �'˴� �(9-�R�!u�,� +�g��Tj��Ш�9j +[����h���Zc��L�l>�,��d� +I�j�@��<�(+s
�S����~>V����q!�^G�7e����c�0_Hr���������İ�e{�z�:��p2,�|H��)ZPJ�56�����([ҿ���u4�&����l:�@9ܨ�����i<�8 ���<��Ry������L]��?O��=��2 +:(���wY��EO���ħwѕu�g�]�ؚDZ���V��|��z���}wp���S=3"��И
�L�YNZe��$B*�D7d;��k���ʓ� +�7�j���|��)V�XK�?|���Ţ;���k��&:x�Ff��h��44t�m� ����=)En^�^�]���3�=b{$�y��H}�.��lR�"[�Mbg2STjI�dG�e�o��|&}���U8M�B +kݙkЉ��aI�!=�ΠT^ +�̔���X:�X��nx�ݧ�QXku�$��T�L_�R��U�{FG�p��?�1�}���TG���e)%�b%�Z�+��������9����EPح��-u3��8�DD-�> ��ܿ�$9=s�ںa��ِy���iR���{��Z����n�����¬0:X�!�u4��TL�s������x%�XĻ�N�0%��8�P��=I7�[��K�=����Uܙ��{�x��2u=Kza�参C˨��� ;�7,��[��s�FX�_�رD�!/��/���RR endstream endobj -397 0 obj +427 0 obj <</Length 13/Filter/FlateDecode>> stream -x��� -� +x���� +� endstream endobj -398 0 obj -<</Length 698/Type/CMap/Filter/FlateDecode/WMode 0>> +428 0 obj +<</Length 714/Type/CMap/Filter/FlateDecode/WMode 0>> stream -x�m�Ko�0����E�v�!���E��FbчJ5���T�(��~��F� -|��/Gך|8A
��|s���`��ːS��`N�iLL�Ϣ
��6��k����q��0#M>�H�/ùh�e�b�g�i�g�i�g�Ӏ��
� -�Ώ��3`7��T�383>͜�Ӹu�|�0��K����|gfx?1#>��|�P���C=K>�q~�g��c��Ӓ�q|�Ћ%fd9?*�OYΏ��3�|�X|璁O�ό�Q������-4��i_�b5v��!,���W{�l��i��� ��I��*�� +x�m�Ko�0����E�v�!~%mU!�P$}�T3k&Rq�<���}����}~�:&�w퇿�?��v�k�x�vY�/�z:�0>{�;Y�[��m=�Q,��uh�,�ס���?��������k��4��!���f����D�I��c3Eq���/�Mn����1�E{��
ٌ5��o�Ů �g%��fR ��#U���.o����k����:z +!����a��"5v)�����;�7a/.N�~3n�����IQ��>��;���ۃ3���RȯG���3���S�NB�źu~趵�aﳻ�(���[�V�y�����"�cW����]��]Q;OJ%U]C�J�����[@����*��kxVP7���� +�x>B-`c�9Y�1)Ÿ�q +����'�4�5��4f����| +�N��"�:� >�>��13���L���Cu��������Y�?�OC>���C/�|ؑ���x>Ad�?vF>����c�ȧ�D�6�)[`�6�)+1O��a���D|�Y���t��Z���7h=��c���u��&���ߵ]�J���q���e� ��: endstream endobj -399 0 obj -<</Length 13014/Filter/FlateDecode>> +429 0 obj +<</Length 13125/Filter/FlateDecode>> stream -x�ݼ xT��0�;۽�e��d&�u��0Y� !!�! ,! K��� S -��5�h�� -E�ai@*�"�h�V��E#�-L�s�K�����|��%�̙{���߾� -Ͱ��*���)�U����hT{ы -x[�l=z�/C5t���2L�����n�`��@�p��&<σj8
��v����) p����$�/�. -����6��� ��6R��4n�L<v�y�j�ux*�PȆyŮ���d�W�r�`�Wd�Q��Q`oQ��}%1oLq'���k�"��q�V�4ߺ5��F�)X����^�g?t�侣ƕ�4#g�� -��$��W^'���z�� -MJg�����I�ԼKΜ�QJd�}%+��K���>%��l@0���#I����U�$#Y�C.�g�J't��t=��G�2�������7�����W��Q<�����f�*��#p(_���b��u���*p@$�� � C�~�rI5A�հ�����(�#}�E�6eD�����h��rr�A���qI��\Q:��r�9i��v�C23�g;��V23lr -��J2-�_<�bɉ���7��(����4�'6oxA�3�J��1 畤$���� ��'��<` 8u�"��*�T_��:��a'Bj�R�o!
��6H����C�:;�yE�v%�ۍ�;#��P��G�#1���Gȋ�};���O�푣/�|zpNR��Ȏ������y��g��� -$!���r�q��}�_�ȇ�f�0O�>�ڐ��B;�F�A��-A
Y�ύ)���;�o�v�'� _���� -�0�,�FVRonџ�
�:���ڑ!�����-�@��U@A�5bP�5
�P��f��
Q|�q0�S�Ymӑ��V�5�q/��q��-z����)��}�?Y�r���@g~�rM�Hx -i!���J�y9-�g�kJ�A'z�ġr"��ȓq)^(W�GeC���a�H���2I't͍��V7�z��oO��;��ofҷo$ѷof��5���3����B#&ؠ7�
FeT����NfN�t:; 6� 9�T``��'�:�Ѡ�i��(C�[��u�p���(qFVt��Y�(Qc�Sc4D�(N"i��GѦ8�C�8�%J��G�ה���)G��� -uE�aƑ�I��d��<��̣�B�\���Q���'�e�d�!G�hƢ
ц$������<���B�������������B�����$�!�y�j�ŞS���/<@g�W₮��f#�C�s# -w���7��9/���7a�H�9|��}G=����9S֦cs��5��w���x�o��3�t�$T;��I�AϤ ��N
1J��a*���JQ(`�Yn��??gZ��4�%��p��9��Tr���Y�� -�U�����J��O�ŚO�w��f�v �3b�� -0��Lb#F��PV:;���R���Ȕ�XTafA���(e؋�t4=X�yJ��B4�8_���H^��J�!��n#�����5�gdb��"u�ɤ��iuB`�X�%[�1�>�9>����&1hB� -����q�3O����1M�_��Kr��/a���Ni��/��,�z�K�^���~R+Q�K���+�|'�|��^�z�f�b�a -,#h�\�L�V%iꣲY���-��I��A�_��b�6>�|a~��o�ԮsOnذ}�ŏ��_]�i���D�A`��(�P�C���j�IN�Nٌ:��*��&�#��5ВVj-1�P�抭�.�е�~Ϳ�:���N�Z{��ԅ]��__����E:��C$��b����
-�첸���ij�P-ش�5��:U�%�'� -� ?����5YbVM����bz3gXA��MC -s� ��T>=l`^���i��u�__���;���jE��C0D�B� -���k�k��s�~����ڣ��vV�l��ޖ�A�k-Z�nѢ�5�{�
g�m�s�����h$��_���_��w����w�v�۹s��v�������c_�������+�Q�cSX(zՠ��~�/��w�"�fW!��!��a�������c�E�{���!�@�a�8�Eb����D�����hӂ�" -�������=9�_��D�}�������{m����ޱ�z������Cч�m!��?�Ηq}�d������}��/�JH8������зYD@4���E:�a���`��튊�u�۬��d2���F.�c����B[^�?O��ftdd�!��I2n�� �O�;˭���d�ʮ-h\���6����q����8G��u�Z�t�&^g-|��g���l�K�j@�;����A�� @v\U���!3��
#c�
+� -g�Ja�V�-�L��u��RLX��!��A���!���� �٣�jBu���}ۚ�ӝ�R-�R?��"OV����δJ�$2�(DD^�Bˠ�S�M]_^|p���eG�<dFIa��g�;fo?e`I��%�C��8�����&L�ʿ� -N��:`Z-��8��pN�e��-P
�`TA*����ʡN��P��e��R(�I�\���T8
G`;Ԣ�P`�@��W�Ђ����h;�/Tb��bjB�`p���B V�]q0�D.4���V��$�B�h]F��O�Ċ٣��VZ"�'u�}�yr�.N�K�G}��N@��a�a��1�8�Xj<f��j�h�A�AK�����-y�]����dM����o[_ۓ�6[G���������_;����C�_�����rx6A, 0(� $�&#+0��_�l��RL�݇6F-�1|�^�i�1�P�<0� x`��X!��A�q����e�]0*`)��e� -)`��0�,��s�f���Ό�Y*�X -�*`LR�_�낲Ȅ�;��~���;a�S�j�P/(\K!RE� 0�a��XP �`�U�]�R�K`.��a��uS����rY��f�\X�U����I!����qn�܁�w�� -�%��Kz��P�aE@��5?@˜ -Eຢ�?�`,�qB��W�.�_+z.V��qe),� -(�J��ؔ��-��P��s�?���.�0C� -E��JU�T�_�����uÿ���{��Tyط�t�X�嶬o��r(S�|}{�LU�N� -Y�
�� -�Ժ��T�Q���m
�T��$@��#4�)�� -��*'�\���������/�-!A��`A�<�C�j�O͂�P�z��2��nsໞ@�Wh��;�v�������T ��$%�����qC��~D���/��������?�� -X��;O�v����gOV��/V<�����BO��\�0<��Rȳ��u�/��ƯJX�~�M�xVpv~@5z��b�����e�|��N�dy�w�g������+�C��ߏ��cr�zw���pԸ�D]IP��^]��x��������춛���܀��^i�JU��|�������~B����M���w��-6u�*�aq/I<��{86Q��i�,X -KQLX��6�O�����[����'>�p����h�}�w+�Ywr8�G��;d���f��]��o[]�E�B�=���r7D��X��9��V}7��?�~�*-�Ҹ(��N��Bu��P�u��0��a0�W����q0��$(��PCU�V����5N�"�X�_����U�S F�-2�b��((�b�>[%��0A�:ƫ���8
E�Z�YC`4�C��p5��+��꧘?F�E�t"����X �z0�0������P -�0
l`��0̐����L � �� ��! A,�`��pt����2�A��\�F0A -(ӡ@�'�� -��@� �@�2� � -O��ҁ�ձ��aꘪz�W�o -'�������MNnd�%߮&�\�a�p�� z��v��\_K�uƱkS�5�#��:����:��7'W9�G�b'_Ց�/��N:�o��ݢ_'_\.e_ԑ˥������7N>� ���"r���:J>�K���K���|�ɟ9��#������:�?:؟8��6#���|����KڷY{.i���{v����<'�rrn����$�9y����������ə��
N^��5NN�b�����$'�rrb������&���?���p��a-=v�ˎM'�|�����pi��^��P�`v���� �2'/�����wfr�F�s�"�u��r�'���&N��̞� ϙɳ������J~�7��z5ٛL~��N��qwk,%����a� -�����d� ���A�������)��v0��#uOeu�<��t��Q��Z���^��t�n���<�=q�<�%��^V;�<�����mFRS�e5��z��U{�V+���fN6q�q��m�d���/N�s�3k��������5?]��p���d�����*3y����<�I� -����f�� -Yq�.���>����8Y�IŒ ���,)O`K&�����Ed!'2H�
2�(���\NJ9�3���p26�Efq2��9�1��f���R2�
��T#{�N��NJ�d2'�8�?"�ݟA&r2���ܷ���d��s2%�1��>JF%��E�ld6)bcE�dDa(���!66��+eÎ��P2t��
�&C -�l��i�>����+)h�����>3l!��� ����M�g&�f�֧��&=�7��f���{9��٠$��� $��k�)%��ـQ$����v֟��Q�_Z8�7�d���LN2�,���d;K'i�$5��RCI�>��%�}�Y��$7c�l_������:�t��%qr�>���%�8�%r��I<'q�
)`�B��B<��Z,,�wL2s�&1�$zqY���(N"#�X$'���0�I'��8C -�s q$���+̑L� - �ۉ�Z�l�XQ2��ba��(�,f�X�E�9���&b�xdҳ jF���IOLB�����>�8ч�BdN$��$N�����
�Q2ù��P2��fT�aJ���o#�?����
�@�� +x�ݼ xT��0�;۽�e��d&�u��0 1d'�@0C �����,��@@���5�h�� +E�ai@*�R$Q����h��6����{ν�pi������y���9sﹿ�۷s +{ +�G/Iv +n +��"8RчHPiS�F)�m��f�-;;
�K�m��+����-ۚ��n�=$#�O�Ì<1`U #�&'#O�$�b���/�(�{�~��b���]#}b��} +�:Iz����/'&�l�L��?>���;��[����0H�*�N(Pv"��(U�&Rl3�T��7���ަ��+ʵ+��N,��!N��F +i�9�gX��{�l��5����!��gln�����<��Q����\@0��E:�]�(����!���F�Ԓ�M�Z}
�sE��L�'8]�t)�6��Y��P��+VU��@BB���L7}��e�oF>5u���<}����f%�m_9|$�E�h!���snd!?���gxk�=�W�4���+� +�|��l$`%��&�I� I��)-�m�B���Z +t|^�Xc �XS!e(�V�� �g
��he��6i�n�X3����']����}�N>�n�>dE�=��q�N�p����?h���8���_${x��^�k2סS�d��f� ����5���*�5;;�۵���q�w\�š�'ו����o̮CW7�߰eˆ��v���c'�W�W���t��>lm���W�� +z(�E�#,�R�� ��c�����VH5�Y�WJ�iK�h)=#^c:���8'�p��W��K�<�?"B�8� �Bi��J%��57�fX���D��?u��k��Aߺ�Hߺ�"�z�N���`��@6
�Q=cTr�:�9)��d�$�&�S��a�#�4�LF�^�Er�)ojf֞#
J���Y�^LPfQ�D�QO����p8��a,Ra7F�� %�8� %�]/S6�ò�l9C�c�����L�u�� Ɖ��x.�M�y�Y�e�������$�!G�hƢ
цD�������P�D�<<��V��d]Ma�0�6�NAS�H�C#�:U��ݧ�^<x�N�/�yMd��z<�c�&�z +��l�ʘ�QU=D�Bi�� ��P�q�=J{[���ʛ/��S��ٶl�-;�����N���zT��
���!�������p�nY^fV@W�2{��2�D4S�.��<��G<�:|���k~���~�6l�z��G�+O���-����k��<���'�6��ӻ1>~̘�m�<��� +2�I� +v���,��IA�.b�r%�&T�ቕ�P�b3�3~�H���n +������93��)�|uQ�h��WDo@��jғ*���Qgi��6ېP�$�w�����y�z ��f��MZ�b������ْ���F�H���c����5?=a�V��BP��ӵtؠޗ�4�tۈ�&Q�Z�6�)N��ê��,N�9(O ��J>e5��*� ��Mg+4��@�V��ꅲ�m?ٗ���۾6QF�Se��uV�-�g����Zm�S` +�d,�Q"�!HT�dR�[&?Yv��!|�)4
9�J+����m��L��O��O�}+�f�V �3b�� +�t!�T�a���~?J���a�*����
P��� +�7:ڕ�Zr�h6�֊^�gi���Z�ӥO\D�9�.gǦ�T�"X�a<Z +�Y�G��,�'��dLd���2'�ݜ�R����'�Z���y������_�Vi]C��r}2���~����f�zB���S�II�rѲ�������;� +��p�dRZr�:!0D,Ւ���3����m|p�4�c�`< +.}�]��4�QY������T�Dd��ꯪ~�s+�^��0�u�7XJǹ'ׯ߶�������s��'�d� �B__d�ҡCDi6� 'u�lF�c��`֑��hI����j(vIs����S�ڋ��_M���h'�W߬:ua�*�w�5�n�u�`� >��"}mh��6�,.kvA��-T6-{
$�N�c ቯBd%�mgM���'<춘��.�k�7�aP~?<�<�7�M 럓�?l�r�_��+������i�բ��Z!"a���^'��%�0/�$O�� �Q���m2Rf
�K�@�i&��tjM�\��(�<�ZE�g�:Lm-m�l�{ۡu�7.���d$�eUE'u�_�p�ٿ�r�+gQ�u$=��=�X���{�^^�V<3�c3k���'��Wݰv3`->�xu�'��w�>�[b(� +��Q�U
EYX~?���y�� +�2�2>����`څw�]t�%�w�v�wv��~��'��~�_�/�����7�7���8>N����t\>�;�?n8n,�)dK���A�A�A݃z��O�1MAj.�%����U���76�ő}����w�����[��|������J���Y}�F���/�����>(����Z�(mB�D��ص�bߜ��V�y�hD����< F��!�I�Lp�d1�0+~��=�$.�Q�9tF:=r��8Ԡ�?� �=�W��v�c#��M��g��;Q�q��Ũ�� &��8�
�̴>���H0�G*j��ş�"���d���Kt�K�8E�LW�5���9���jlf�0�c锂���B��u���}!�OH43d
+����>.�(k)A���(9;��7./A�v�����o��̋�Ғ)sΣ_�ESǗ�<��Xr�K��a�F���_5�5s��!1����On���^��h��R�}q#�-�EQ �z�M5�LE� F�����D)��Z�Z��C�st3k B}Bl� b���7ӳSճ
�_A��O�_D��֎��W�$���JVPH�31�}2C��"�P�� (��Ghj�(�_�>u�z��8$� +���W�_����b�궿�|dg �#���o�ƹE#�/Q4wc�ߒ���#7�C=Ԗ�w�5r���#�ol��HJJ;�ac#�-�7���Fm<����4w���Q�4�{����9r�����S��*n8ܨ�M�4�����T��3 +QH��J��ů�6�}�����Mq���2y��r>@%u���6�'vh��Pqɐ�7)-�[,�< +4�[bg� +�>R�-3����Ίt�P��nc�y�����o��]G������˨��/�˼���P!��A�D��F�����m< +7IQ@��2�?Q�Xk$)�7�� ܴO��t���a����@ŷ���KP�{%����R+�F���y�%��c�.S\X�W�_jS���[E�U��Tx�=����fU�92{�2bl"_�����n۶væ���>6��锆���Ϗ����]�$�9�gϑ?����x����G���Fz����|I4t�۫���|����=5��h���+���ڶ�W۶�v۶駶��?�m�m�������z�6SŶz�Adډ���5L��i���/����%��8S&�G2i?�_�O����4ơI��L������}�q�i��Դ�,�+�ˌ�)еO�>�����Or���Y���$��m��H��� ��|���՞o�/����d��8v2J������;���twk��M*��ظ~�����o��Iu��\��Çq�h��~�Aǖ�Q���o���]WcK��TH6�h�E� ;�A2��q& ];� ;�6�'N�L�X�n����'���l�x�/>�����N}� jn�&�oI|'\Y���Q��f4+-~u��3t��v,{��2{c4Y�Y�~�:���s>���}�^�x �ڹ�|F�s�>�Ϋ���JL;\/�V���ʉΆ��#��T����0�.�����|?��+֗�G� +�J�De�Ťx�KJ��t�H!"
� X�T,O��'���e�]��6��˿�8�Ƿ��b�?���Vܶ�C�J�'���CP�)}e��Q�onT����u{ +�@��aU���4��Π SR/��(���g����Ҳ�A^�I/!&[҂B!���i��X���Uc����'�%�6�hV�;�g��M�u=m�]��ls�U>jk�7+�jɠ��Մ0Г{���+�-�5���-�n;R�9!���!2|�'^�\����#��Z'h��,�A��q�6���h�y��/�T������� +��ʟ��_�����ɽ"< +��8�VSS �?����� +��77U2tː�B�/�{�����N�}-�iqi�xj�kϙ�=hɹ�Z�p�d����7�t ֤Ge���|A.�Q">��r�Κ�h����P +�a��S�l�6���A�8)(N�A�SpV�f��S�VB +��u�ʠN�+P +��e��(���\���$8
G`T��P
�a6C����Є��P��h�/T`�f3j@�a3p��1���[m8��Š�8o ��~���x~�D�yT�94�.�{��LbE�v�}/-�ޑ��^�l�^�۩{_���пjl�b8d1�5��?6��ƙ�APl�"so�b�AK�e�冲P�b5Y��c�����������\��=�>Ծ����[��Q�X�x�q���}Ǘ!��!�B�t��c$�|� +Xsa��R���0 �!R!b`��ȃ����RX�`:�A/��BX3!b` ,�c�`-Q�͂%0�2�%��`L��P10Ja:,�9�������b`T�X +E@ ��!ʡ��xu�%0W�.(K�Ⱥ��Χ;���l��F�� +H�%P�f�,���*uɰf�R(����N�����࠘5f�(�吠���N +�~te�s�!���5H�����ohb̿�yn��B�⊐���b�1P��-.���*�2�m�`���f蚣�"�,�pf�wgu��IX�&q)��.T�_�sm�r�K�9Zf8� s��ŝ:>f���`Q +����IG�_n����.�R�ʏ�ѫ����Ĩ�5{�`�
p�N��<՝�Ӱ��L��N��M�r�e�� +��0[��j:�A�"()W�Y�rb̂�*<mNw=^�� +�v�c �S�s\��0�U�p[�}�m���x!� +-[r��N[Y��>��s�*aۚ����S�4nh�|���S@����}��y��'�X ++T|g�^@�N��S?���Ɋ.����;=��]���+����T +yv��%V��U�o�)� +�� h�F�X�RS�����i�,�Z�n�,��4u�q%wh����1�yL�\�n����+ J~ګkR���;�v^Yҥ��vsw��w��+-W�*Q������E��O���Q7���i�3�8#��ŦN\�6,�&�ePs�c��a�Ϛ�N�E�(ń��h��Dw�k8���9�{�sI +�C!�|��e�zGU�q�G��*,
��1*l���߆C!�`��|(V�ȇ�*�Q0F�=F�(T��r�"#�~����٨�^�R?���*.��`T�U��J@ۅ�Hȇ10���<(T� ���긨ς +to�� +�c��Qm?
&�( �#�>H�!�q0�0Ȃb� +}`"�!�;8�0�B&DA(���B@�X���8�����à �`�ɠ@L�<�O�� +��D�^7� �ojjj�nlAZj`��. +V� �DN8'�������H'�:J�_E��^ž�������z���^k�c�&�k>�G��m +��
�m +�oN�r�tr�N��!m_am��5�:�E�B��\¾�!�Kȗ�����wN�� �sri>���%�}�>�A>
#�Ԑ�9�'}�`q�|PC�������������*�n?Һ��Z��N.�c`8y�@�s�N�m��s����'o��^v��789�����k������A���S����NNl5�vr�D��|�5q��cS؟��?��ǎzٱ)䘏��#��!���˜��� ��^���r����L��~N^��N�q�{i�������t�<��ʞ�I�Z���$�߭"{��o9���3��� +c�%d�o�+��F!�6������vp�=��=���8y:��Vd�5�橣������:J�ZC�|�˞�B���m����'��'��ǽ���˪�Ƕ�cv��H�*����Tn��J/�b%�9���FN6���
�������:N��Gǒ���y����*���_�"�\���4�G8Y��2N*��X��T4"�}@����t��,��Ŝ<��"N��e�5daYO�p,)�Ip2?���dn:)�A�%�9��I '3g��LNf��f��tN�q� 'S'�T3�RB&�N�dd��$#��I��L�d<'�G�����8N�r2���V�ќ���"NF�$6��G��dXa(�E +�Xa(�ʆr2d��
)!����(�%����,2(���ȠF���i�@˳��F>=�3��2����/��|f�kDk|z�kҳ\�mD>_ ���(�
�Ar8�ߓ��$ۚDzKHߴp�w8��O����$s8��z'��,��tkK�$-����Ij8II���P��a�GIR�`�d'I�X,�K��^���@��&��e��ܣa�xI��8��I<'q�
�c�|��B<��Z,,�wLs�"1I$z8qY(N"#�X$'���0�I'��8C�8�XHq��H"v����f�c6N�(�Y�b�0�J�w��Y,Ģ��d`f1k�2�Y��5"�KԤ'&�[Y�ȉA���C�N!2'Jb'�N���
�Q����$ +A��d�V������F���[�� endstream endobj -400 0 obj +430 0 obj <</Length 9/Filter/FlateDecode>> stream x�{ endstream endobj -401 0 obj +431 0 obj <</Length 352/Type/CMap/Filter/FlateDecode/WMode 0>> stream x�mQ�j�0��+�ArH��%C���C4�=;��Ē����H��Rz�����̮���x�ꊋ�shUg.�}� �[ź�; r�S֮@�,:��m)�#����:��?�!�yg�j ��n����� J�� �C<'�~��B�$�ҝ�j�9K�Q��Q�j!����uI�̍(ܬ�t(>��a[�Z�r`�N�L @@ -1353,7 +1468,7 @@ x�mQ�j�0��+�ArH��%C���C4�=;��Ē����H��Rz�����̮���x�ꊋ�shUg.�}� �[ź '�����y�* endstream endobj -402 0 obj +432 0 obj <</Length 550/Filter/FlateDecode/Subtype/CIDFontType0C>> stream x�%�OhA�gM���4Ő��3H=$i��J/5$Rh#بH��i�wew��E��2��$Ĉ �^z"�jO9z(=�(Eؕ
V�\����{��N�0�?�뙵�"����r�Z�4gΛa @@ -1363,131 +1478,130 @@ x�%�OhA�gM���4Ő��3H=$i��J/5$Rh#بH��i�wew��E��2��$Ĉ �^z"�jO9z(=�(E� ��
- endstream endobj -403 0 obj -<</Length 9/Filter/FlateDecode>> +433 0 obj +<</Length 10/Filter/FlateDecode>> stream -x�� +x��� endstream endobj -404 0 obj -<</Length 370/Type/CMap/Filter/FlateDecode/WMode 0>> +434 0 obj +<</Length 407/Type/CMap/Filter/FlateDecode/WMode 0>> stream -x�mR�n�0��+�Kp�q�P�)Ԟ��PKĶl���W����hvgwf쐗�q���'�+�Z���r�脐�b]��m9�k��b�����%�Ԓ�:��?� -�B> ^��:�&�����F� -%�%�|H^�֛�I�k@�7���EHnz%8{�$���(�Y��0|�[�m-/ -���� +x�m�Mo� �������5��v7�"5N,��5��فI)�����i�ڃ�����w +@��DT��+���+�WP���l�����=�|sF0�Ii�r'8ƾE� endstream endobj -405 0 obj -<</Length 4132/Filter/FlateDecode>> +435 0 obj +<</Length 4907/Filter/FlateDecode>> stream -x��X{p\�y����Y��}Y/����W~ �+$�ɒ��m%�XҮ����E+��c�@xch� -����
q2FI ��P�3���R���ą<:�xL�4�*�:眻��0M;�j���s~���}���w@��P�{h��B���x`w����wl�> -`S ��Ny��0��8K2� -���AgEr�'����Z:]F��3t��#WM�LM�`b�$L���2��Q��)|�ܘ������ V��p&V�.�TV���6��I<��c`�03"�%���xW�%�(&�%~�_�L��<mv$� -a��
��[���G��qv.��L��^��˿# -�S�����ֽ�r�5�WL�;yJs]����e���{�S��������J��N��⮮��*+���c��wOqw��)go���偢-X�[� -�6�cc�p�cͩ^���f>̩�llߛ��L�$��UhwY�+��X��u���~֫�e���}�{f��O�Q��Oo6���; -秞H e��C��kJ�[R�g笲d���5��7f�f>�ڪ����PB���b5HZ2ߴ�T_]���m�P\��α��"��*V��94W��kS�0��'��A�?��������w{��;�����~6km2��<�ď]Q���v���m��W���g��������ޮZ�J�I@;�/!v�zsXp�ϖl����2VY����a�����X���cVE���rj�_����dt�}?���e��?���~���3>���O���~*�1ã�h��*�P���;�Pv�2N��,�!η�ұʼ"_�IԭҝɊ�"�\Q�L��*Ϧ�Z���:��_c�Xy��uM��&O��l:մ���=���8{��X��^��:���lW\ -N�`N܌� �ÏnQ -'0�^�ÉbN�Ű"�Ώ��!��C9RQ?��1 -'z@7��/g:�-���c=� -M�c��u����ъ&��<�=QL��Q/E<�.z~ +J�Qʻ�Gb�P���B�o?�7��pB
�)&�����D>ק��[�a�ӥ\��B{�uY��RqHZ�|vUWQ�~���'�XfF���S�o�;�8n���'�.q.��^�B̏��� ٦�NӢsF�Φ(W�
� �8��P̏1����n�6N1���i]����;F�Q����Qع^�(�btT�Z�p�u���1���و���3;��;Jtj�sI�/�Ś^D��#�չ�������E��l�T��T�b_L�[P/����N��{P�69րv8ъ6�`7P�z�ɸ��1^(w�4H�tJ,�ц�����j��kD�Q'��c��Q�v�ڂ6���hB���z�fԢ ����;d7��5�E~��;%Ŵ- V���1f;Q�6��c�7�A� ���vy���`Z#5���h�w�i'�Њ�K=r���Y��m�/�����bT���K�[�!YK�Lq�!���)�6ʧ�Y�eqG�¦�!����.�oB��V��.-ԣ;c����!o�F��O�k� -1&Tz6�f�%DEĴF�M0�'B��%=��-��R�� �D܄RMrv;ZQ�Z����|l����*L��*'�\�IħYFv:� -o�j��q/Tj��k4�G_ -�Q>"�E�]������%�@�EU9&������lD��i�gt�5/�7����H�PXQ�#(�:)���4!\U��1&�^�8�"ל܉�c�+M�?Kjmb'���97�h^�����̊��$�pK�\ѷ��E�o��P�[�%v�>٧�^0�J���u&��WC��E�
��e��^D�U�)[�b��R�S�"K�y�j���"4ȇ��-Iu�r��+�߹�X���c����O#���TX����p��,��P@��\�x� �-���B�����N���6S����*��1� -�Q�C���èX�Q����g�����k��O� -���P��Ӧ�ޑ:�?O/���f�G���w���w��� ���� z���?����{v��Ng������w2�g����ܫڳg���ҳǵ3�W�3]tƫ�^M�����\FO?��?�����oy絧���O��'k�o{���z\�����f�/uz�F�r�D.��N��#:=��)���:J�t�����~�AZ�}��z ���<�_���w��;���
7��6�}�M�ܝ��ɣ��� �S�N�-�������>:f��O�Q}�����#��o�wzh<��� -����tH��H�d���|X�;�)�W��G)�KC��|H���m<x��ǵ�7������t`����;}<�����>�����B>�zu�ѩ�(���v�������+�����l�+��f����v{�S���4�a��4jە��&hW���ʦV��Լ�Ǜ'h���tj���;�u��t�,혥�G�����R��js�&���C۬���L�U�����oʤ/�і��e��oL��9T}\�1�n�j�7��͛iS��oʥ�r��F�P��r��A������e6�>�*+r�ټ��*r����������lT6m�zS��uY��J��&xS�uk3��,Z7�^��hkͩ|m&��fǽ{�iM�4���\����Ź��HŰ��\*rP� -/��˹����6��@��;��|*X��:�\��+=��A���|���������Yy������,�g�<�i��렜Fʆ�gOв���LvV���d�����Y���-���˳�R&l<s/e$g�JO�����E����t��E���$s*OJ�$�a�f�)ܜJ�i�}A�)ħ�y�6Ad��T@�b�qV@��f�{N�u��?�#�^��u< +x��X
pSו��;�ʖ%Y����l���ن�*�`��
1)$ؖllKX6ء4�����q�lK�7!)����n�d�
�m�di�N��Y +i�3.�t�6q��ν�I����vw���zz���|�;�{�� +��V�_�<�����b�UM`yx[�Y[�G͠�X+�a��<h,O��E���aXM��h�A<Eo��r�}��r +F��~�8���Fq��1�W��-�1V���>V�γ8V�6z�x#x +?b`O1�*�y���xW�y�8F�y~���]L0�4f���� +b��
���⣭�5v^6u(O(����{/�+�Ve��.���I�c�c�� ��6�A��:|�7!^��$U�#���Y,��畕�+X��q����gcFLI�$�^~o"�~?��UR +��Q�]��nlq�x���p�W�%�9����!���TC��ŷ��y��U�y?n�bQẆ��+5�j����uM-��[|���r�T�1at��G��v���=�|��Pފ�,�E���6��S � ӛ����,��)*JΜ_ +˹�s�)V�����*&Ô5��6����L��pP������M��AIV�0�d�_����eV��e��({��?�h��v��%5��E<Ґ�M1RH>�ڗnv؊ɑ�(�29>)8\�:n�R�rM�vG�gYEy����y�P]��];�=�2~�eh���{�wt�O?�d�R{U�@�@{���)@=e�#^�+��M<��ݱ\!z�q�X�����bT$G<ִʥ(�e�rZe麦��Z�%��-�).+s����X]���mg�Z{E{I{ç��d�<��iw]�UIخ5�.����X��w�#UI�/���d���S����q��]�̸�`b�ԛٷpA����|GZ��1�rZ&όO�_��*+++u��T�u�j��$�fM�4>��bVQ�_�q�Y�Y��3�e�T���-X`�f�����1�^��7��g���kz���Oj��|'��Bw�`C�rt��c?}��X���k67�ڸ���?�w*������-���E�G +RU{��GT�s��U���TV�ԡ�w)���.:�]����=9Ύ�{g��������B`�2�J�`�Eu��ʢc��q��#�%q +_����u��וLeX�9-��7�%) X?LP`�W0��X>8D���@`��ˀq����Ƶ�X�ڸ&,�o�ku�5G:��&���u,rY�q�,d\'����u��a5�a}�B'�юEpR��N�aN܊.�#�~���V��NԢ�(�U�F7�h�b��7?����ňC5�Vl� +�;��U�hCPV��̬E� +\_ ��!pE��g͍��
k��u�+���H�:?;�t5�J�z�x +d�^��������ibя!ɷCV�]<K����E��Bs��#Mpy���3�F��u��KX��@��6�X+��4�P���қ�q�oF
��L�Qs� �O3k�oV� Oo���Lfۛ�ˍ8�*�JK���z����gn�N8���}3���N0���Gz��sop.�F���B̏���3�M�;us���~6E��l�������1(uֳ�!��SL�~q�DV̌����;F�Q��ϰ�QعY���ݨ���9k�¹7�Wrg���g�F����ӻ.��D��=q.���\D��;�*�d�\������E��x��NKWQ��Q�nC����h�v6`
�q��(�j�'Ј
،ZT��2.UrD����xj%�l�X:F#�$�8%��T��u�E=����H5h���(�ףu��6���Q�M���ke7�۫��)毗\t���0��lV�)�l=jЈո����x����F^�Gy�1�VI���\�M�����MhD6�I�)��
��҇5h4|���H�Vc�E�X���,YK��L�Y�#"�^Z]'���6Q��(�9@��y�7G-7I��P'��6I5���(n$w�J�[Wc��O� +1&Tz�Eg6Έ��i���`.�O�"M7�$�6;:7ʎ��%�&�����Ѐ��H�=k���
muL=������D|�ed7b�1CǛ녾C�i/�T�W��l:�Qp���,��zU��L�,��[D�c"J:s}��6"q�d�gd����7��"�>M�б"�gGP�)t�ꕤ�S�굫��s-|��=�{��Jg���3j��N@��k�ܞ9����Y?���yf�p7:�"OɅs��H���n��hf��}����]�~~�������!��"���2�y/,��鶮���K1O����7;��>! +.B#��G^�ߒ�U�s��{�<�>|�D|�$��ݰ<EE/�%�d���}>��D(����3'���'�V\ׇ +
:g0�wz�!� +a3�/�}�D�](���A�.<��9��
_����;�_|g�� +ud��> +�So�iޫQO�6�s�z���]n����Ν����w��.�<�Ύl����wd��B>��5jӨum��.m���o���v��C[�l|��Ztl��6{h�F�M��BM�Ը���ic��otP��6hT����i���4Z����)��a�M��&h���G5�)�fU���t�J��yh��Vޒ�Wjt�g��-I��xZQ��WS�g�yeU�W?O��˗����iY��/K���t^�����<����Y��=>ZZd�Kө�$����T�N�E6^�ME�V^d��1��5��K�y�� +�x���I|I2-c�x��bS_�D���~��u�0�����t^�O��t�^G����tʳS�<;����Y�]�� w�SN���dRv��gk4�����<;ee��,;e��aV33�<3�2uN��<�J��j���֑6����d_N),��L��CV��['��x(9��'�$�xR%�&��lJ�O� ��Lq��ؘ�L���1�8�@1�C�j�fn�#��>�r3�1o��)���II$g��1�;x�-���_������x endstream endobj -406 0 obj -<</Length 20856/Filter/FlateDecode>> +436 0 obj +<</Length 22101/Filter/FlateDecode>> stream -x��}[��6�~E�43����@��M��w=��Z���èc[��u��mdž��#yD�H��ZA=� �*V2H$���ۿ�����ӻO����w_��^�E\��?��������ݿ��{��8×����˻��k?]�� �6q�0
>ď���������������#����?�������������ӟ��_�MB�Ԡ^z�(�D� -�V6!�*+5S(�#��75y��0�_��.��oߋ���Ǣ�?��߾���B���U/n�
���_������_�� -/��h���7����"@1�O
��G�����"�[�H�&��_���C�O�ό}�G� -Ox���c���76g��8��B��j$D�/h�ϕ�kˁ09^��r�O/#��Tp�R���)���IƔ�^Ή*�:��FWƎ�K�0�5e��u���X���'��sc�n~?�T)���=�NA*��������J�+�V=j=����Ě�USt%�k�z�<*�;e?��Ҩ;�j����>9�O��d�,@Q���R8���oF`�uWv���X��rF�2��:T�4sb�&��t��H��:k\)���;�u`M�R?�ˏ�r�L��~�ˇp��9�̓�zǎoIj{4��`9�O�h��Tc-'�>�Te�X����v25)%Q x$ޣT@$�����_���0�{�X���i0�Xk�YTl LJ��؋HCp�\~�ǀN[e�����������Sb���I����o�S��F�0���t�{ 0��%�������b>\�@go�3��'��Ͽ���@���G��G��R�N�"�@�Oû��K�*�{c�x�g�Ģ~<��u���MG1�3j��8�-��@ٽl`|/�]�S����N�ZЖ���e�[jt��& -_����?X9\��ԏ���C�;��G���+�n�H��@>w;wA � ;!��
��w�P��f}������~8R֏�.遄�e�k2k�V��Z!��:��?� -p���`��ҳ~T@�w��@ݔ&.Q�9���E� P��_�/�Ń���["z���az+B�^i0Z�f� -���'��w�3�ч�'�["z�~�H�}���n����?]��B����yp(�����}� �����LW�"�M -@���F�ڹ��'J^�-�(Yp�|R��-���s��6�7^�O���b������;�e�����!������7(;��]�(RM~F��f�ө
m$5���RO.������4� ��48-�z'O�u��$���<
�'5\��{N�u��赓��Z�Yw��Ѻ�;Y?�Ɇ��DpZY��|�F��֟�!=���1m����U�0�)if[
��@���J�[��`|�[���������!�'~�M�9?�;?f�ZU|�,��,![���j�U3�,�YY>���@U9>"�)s�<� -�g�ĊV��p��076��&If�g�H�B�龞�ޚ�y�k�'����:
�2����%`������1���1�ٱ}����i�.ڿ�<-l�`s�e1�j����D�t�-;��W��o�[�r�J�iq�]Y����&���p\�ɵ�c�Q��t9ne�is-�\��ko�P����\Y:��(�p��/�S�K �y� ->Y'Ǒ(%X/��w��A�&
h�|:FjΘ�D�[�ؕ�:3���c��/�%:�D�~�7d�t�������6����re���?�X+�'��ML�3������8cX7�F3˔H��gk3��(�RKJ�T]-h��ث=@⳰*uP�NQ�~������k�|^F�F�O�*gd�$���iShSE�ܦR��h�=�4��(
��42�����ȻӢZD�/@���]+�T�� -�Vv���C�(A��8�%��=�]�5���V��٢q&+�GA �*�g�?~F�6�O�j9�x�������\��NK�s -���ୡ��<�w�!�h�Z�T0�?4���u��Ӗ -�jũ8m��N{�}��6�O[s�{w��O�m��䗲�{��6��w����i���@1�d�:����;��E����w���9�>'�jѧE��;
�N�Ӡ���`�Eu�'gnP���Xw�S�����48�h�3�S���ԟ��jѧ=5s�J��4�[���p�V�OSp�:M�g7� -ȈT�w>�+�Qx����D�<��p��n���3��B��9![O��%TH�a�2��NM>T�ɀZ,7`D�>]��L� �:����my7q�<謜�ʁ52YV�9�I/H�2*��y̹�<@ -���}�r*�;O9��[I�P��&��]���A9��&�/<�J�iT�[X�Q��_�Vխ9�Qu�N�jѦ�V���E���_+ -F�ٔX�z�dRr��+ �6��>펲K�-%���x�i?�����4���C���T�i�b�������;s�2��-�y�*nV�q���g�����m����t I�W[I?m��k봭�R4�kഭV������@ޝ�Ւi���AHL)g]6w�����/ox��:.�����BR�y+���<��^�����e�r�o�K�ү'�fe/��䬟�0�!C���L�+�ɯ" -?�~/f -��x'l�ν��ܛ�oK��⤕"���<���v��I^O��C��3R̾O��J��L���HX0yQ�~��*C���%�<�
�hYR -p�)�g�iK���SisP�y��Bs�< - M^�7�_
���϶�!�#��)h.��� -Z �h��S���+�Dy�LY�:;y+ϔzV:�������EW̤�K�VE�?ꨑ,���f�����oG���X�!҈]��a{Ⱦ5F�=!�Ξ�*���g*Z�*�GR�3��nz��g�CXq�[^�y0l�B��u����;�4e��%���)7����x�㛌ǘo�;Td�+2L�C:TB#����d,�����%�N�)�"!��
@��h��T��ȸEJk�i�5�� -4�j�1g�QE�ǫ�}*8��A�d��7���iM�w�re�'��92
��^��.w��k+��Z�:�������2S즤ؿ���k��*m _e{SEߗ�j��2[\Կ�w���peaW��Wf�� L�q����������n���t�Nm`���VrO�
�����w�VT��F�:�晴�0w���b�sG���������t���ȴ-�q)���u��u�g:��$��LFB��j�b53G>Uzv�x:Ţ����s+�s\�!ڶ���VPҀ22�h9P�L�bv�����i�k�x�3�0k���Z��.���SY]�F]A9!t� ����Bߖ���y��tA���x�U���B
�2�kF�5�2dG��u�q6��� -�X� -�k(��)�����U��`�E�i����m}�l�d������iSr�[�w�8[��ES�� -�AK�͏�K�w��d��i�BOȚ[�N�1�����~��7�d�MF�,�|ie�aIZAP^ᤚE��`D5B%fE}j��=�9��u�Z6�S�u�ԓZ�#(%
=�K����@�}��HM�0�*�+t��`�#�2��t�z�!�=�z -qύ?�A2}�\�oS����V�����V���cu��0�@��5��Qq)�S���\e���O*p���{���ܖBaA��5����"oY,Ӳ�[�7��t��ّ����0�T�uK�s�j��%0Zh��œص��78�c�W=>��'ـ -�tZJ�tn�Y �vǐҋ�S�d�{��x�k��e�)!�y��1�Q�͏���6H�\k -�n��"��x�%s��3R�|�������t���
���S�B�Sw���w[<���Ki����Qēv���x�ݲ�0
<O���9
v��Hd��h:�rԶ�ˌ�;�D��P����JJ�+�h��XҠ�y��\��������XԟЦ�a35�v�T]"�p�0[i=n�F�[y��|��f�����|��Ώ�N%�4�ڞ5��X -ӗ˟���L��`�^k��*2@�ΐ��A2X�*T�z.��'�F٧9�憺��&�k�U���`a��*Y�Rx�}����:�/koc��������2S��"`��RO'�q��rz�UД-]{�@:�0& -[�`/j�A�ۿ^LDQH�1�I�i'M��ճ[n���j���v�^�p9�� -�e�����:%����!�C�ɴ��$`.��5)Q��s�`��l�5�̍4�M�l[i�¬̲B���*K�����7�lEg[�����t6EE�u��jz�D�s~P�\.! -�����K�V{�w֣�C�(�30K�i����$�2�d�M�[����R�̵�'YN�� i�<��\��F��B�`'��|�\?���Hc�QH�u����͈�DUS�F�*���v�IK�YE���]Vp�P]ZM�(�37����C�]��e�~L�W<P^��X��J��~tf��[?x,tGK�Ts!q�D�ۙʋp�5�k昲��MAE���e�9��Q[�˔�Ez�?<�?Ô�I��O,$9����Ej(yn8�l��e�u�<��TҋQ�h���\]rRBtNuX���m��� -��$�����l��� -� �v�e=���"�8�ڳ��9Cݜ��Fm!i�3ҝ$|��-@I"ٔ��~�H�=T͓��J�h-��O�Ѣ�3�ߥFg��`<�k��5թH�����H<�>�F]ޤ�s���`{<usd���]2��'��jc�nn��Y�L��|����3<�[������{� �JM/c t�h��D�澞d?ڢi���������FJ���Y��\+Є�y��m���z��_�)�0�-:�m���E��E�������7���2�:p�,�즹�r�ϙ�,=�}/��L ]�5��V�
�tj�M�$���Xvd�S�jh�������� ��VPw�-����.쀙R�a�MXi;�]�^b��{�y��Wu�wE��`@�����]�o��z]0�
g���O���o!�0P���`d{^i��^;�Q�`Y{�,�o��밎�+&��t`TqM��G��[b�Z������Ok��37WJ���9���x
Jk� �ń��K~���ա��րa��yjІ�#zƃ1�{6�`�C�N��E�a�x���szd��?ٮ�u!m߁g����A�PkK�� t��)�d��S��^���0Wms���"t2��3F�B�,��s�(����F`WFK��H��7I�����C��R�X���QC Q�A���& ��ۤh��9'��Xh+o�Tkl?�o��5����f��[,P���2�l�fp,��=��7ʼ����{��]���S�1��p�%�yZ6ʢ�����۫h��T��P��2B�iͥCb -'X����MᘥA -|�ES8j1?<�m{�ն�B�߰+V3�]�0�ԁ�U!���8x�s7m͈$��[� -'�!���*6�HG� q�o\�NTlK��y�0�/7){)����)�M2/�'$��y�V��fK0�zsJ|���4E ����������Te3�B'jX�y{ -}�Ы���R�v�^x -}�Ы���B�����ۭߧ��<�!W�pz�~a�+A>�P������9o�rVx�oܹ�r6��[۞k통Vs�( BcÈ��h�)�mB]��ԡ�_ME�* $�����������-�1|�W� P��}Ì�5��bWo�k�2�W��B�$tWScͥnwN�o�����J�/6��$(���7�\���X�fl-�ܖ])A(:%�Y���V@O[kv�-�0¾��~�Y����j'ek����D���g'UW1|o�p�9�� JXn����^� ����ZE�ɑ� -����5�^WCFI
E�;�P��N5�w[��?E ��l�)�H0kP�5%II-`�pwB�ܞ����p�3o`�_�m��#��,.p`���oX��T`��V ^]C�}��S�ۤ^�[i,�_Vv�Z9*�]�B$J;��R�-�z�w�F��ż�Ta�b�Ī�R�RE��> ��f��S�Rf�N�����NX����a��=\���B�&�Z�Fc����>�rY?1U�a���Uw��*���TKN����Q��������8Ë�cGG�����5�߷G���9U�
*��d`�e�W�T�v�S�E^K1h-�����)��b7��\{��2ƪD[٨�+[!���?̏��G��[����\�s=���Ɖ��;��`�o���s���*��q��5L�K�K)a��ZS��)E��9�6f�̪s��Y2+�U]3RV ��f�2b�c�F�m�8Ͷi}m�}G�ܭ����=��kgpY�]7�Q!�2�!�ʰ��W��4 u�gnU���������[�+˽f�kʡn����J�$��a�^?���|�d�'f��%&rjڢ3��ܮ5�58 -\��A�-ZL(l�얟���+JD!��� ->�T�v@�({����v@iͷ�H��\3{���C���P�h�rBi̶O�j��� 5n��6H��t<)�fŊ2�gc��Oy�nf��lU)�3Rr66��~��e -eW��xhC�N�̋��yC��8�~��^$��V�X:0�����`�0L����p��p�:8��2<1(���-p�6Р�:n�K�c�JE��cm����E.���V�uE����,��l��}�oޢ>ЦD��+�[�g\AT0������+� -���eM��A.���Ry� -�Ky�[��<:=��:��7�C��@l�EL5�]����4d�.�a}����ML9���#��(f�V1�H�������ƙM���y��x��h���i�����k�k]kӔ>�sZY���I����D�c{}�_ّ��bQ%�}]��2=<�͈��ɺ���&/Лt�����M_dh���j�qM�d.���j�w���3�z���w���*��-�J����I��2YR�#�!��PR9��SF��C(Z0V��z�����4�@�#������s݆�3���(�J� -���sBI��p -i�`=�}�8;��7��З#j̶Uf� ��K�_V���.�ު�w��G#%����+����-H����xcM�kWS���ﱕ9���'�d����!�}s��-����n�]7[����qV 8�t#���&�6��Zc,����k�\�?�N��k��*�#����ӥ���Vh�5�4[ -����a���' ��2��{^%`x�n�7<vҜ�w�N��O1������iI]���A-8��%d>Da���$#qIߐ���)eU22/L��'�6�S�8;d'N� -��sҗ�v~싡9w��@������fUS�J�=���SS5��Q5��j�118�*�U��A�V�f�h�%���J��4�Z�{��W3n�G��a�v�O������v,�RN����T/���ظ`R �\0����&���O r�۠J�*���u��f�!_�0/
3��&� -6�E[K������t�5�b�lJj�3n�/��S>���0�!��qg����H��Q�sw*K�����mU�$�"y����сu�#��@ 5�,��X����E���"iN���^�PF�ςX�m�S���se�뉉� -�7����Dl7hA�1��>����C�1z�.����C�1Z�>���Z�~ƀ�����&���l�ӳ��M|z��ӳs�����t{�����=?K6M4R~dfr�D��O;�^L�#:�*Q�X����}P�BV�����2ִsG�|�R��� -�F�.+9�JJ�V<�F75����dk*���tW��眯)���;���d���;ku%jZ���#�z��:$A�U��x*�M -]U�s�+���?\�+Y���QJJ��y3���j���|�5eޘo��jrdn�ϣ8uT(at�*75U^�߁��m��2SG�Hh���j���n�U��⢢k�������E#*���Q�f<\�۩}4ߨmͷ���v�2S�wV�T��x��%�Zd��f�{b�~�l��?��8��I�'0�llj;L�S-N���UU�6����N]%$�L�9�G5C���C��J�Ϗ�T���2
��6'UlN�����k���S��T�9���:܇�5���|�5��9��N=�z�)���]�#E^��z<8
��_�T�N�<j���g��k��dE�h-^j�>i���h��Yٌ�k�x-���|���5��w;U�S`��m�Ԇ{[pI[wP
�[Ux-��ľ�*���A>�MԨv��y��J�4켐ۑ��祶��>��|�b*u��z;.@��jyxO��Z"^s��ySҨ�͍��h����g�t�R�.;5�Ѡ�ߜ�u�f-� -�h'��z����c2��J]'�ގ��z����϶ZB\k�e��o���A�㶒V -��"-�A���m�&%�h�zHE:�9`�ݧ�w��/4���|[�ݿL�zH�ɜ6rg�� ȻG�z�E��Iy��o,��F��B��H��F�j�J���l��X۳�vj�=��Gi�Z��=&o�uo��O��]�f}�^*��T���f��w,����BG�I�?�q�Pk{���vb�C���ש��*R�%��^ϲ���w?q�wi�B��H�?P0:yE��ш�Th.i�ƈ�W�{%����V�3N��}Z�!�4��W�no����~l�9O�c�Z� ���M�Ѝ,��ς$L��_��4$.QE�1$����Z{qJ)�Ȋ�VsL܀�"3�ۭ��8��*B:�)���J��Y�8BK_��
�{�W�9�����L��n��pRi�)�P���q>Wv$��Xv?��9��PR�$��#�mzrXH��M*kq�59��2\�azM�N',�!�d�}���/��ƿ��M!��0e��L5�V���Aw������]r�6zЌ�(Q�1b� -К[9���n#�R�J��X9���:���/y���c��Ḋ��6�FvK0(�@3���U��W$�c�m)Iv0���Fg/��hp��������K�����9���w����W��&���ၬ�� ��v2��@_���}r�w��op�K�#e�h� -�n� -0��`���}��8�Õ69;zv�� -������.x=� oٷD��q�I^ -�M�a�]//�#�A����_�����D�1<������{�q��J��ƃq˔s�S�����g���T -Y����L�����0bg3�?R���>=H�u4�D�nxF?��DKD�Oɻ�_����������>p�σCA��H����I�9#
X�l,�'
ί�sX�h?w�tI"�9L�*6�M ����ٹ�c�$��A����XŖ��������7���R��:%��Y���!FQ;�Y��Jӎn5(�z,��4;���̥���q_�e��<XlJ+�� ��M -�B�m���OA4�GF-Jmd�pl�{�gEҥֲ�@�hA�nh"-vM +���@6���U w�ʬq�C�݄Q�oJ;?��rS���^�6\�˰�LLz���z��Ki.՜J 4��k���1j�~�(��V�sL��������%E%y���K���M����meSV�"�m�Rد!j�f6��cKIIHz��_`}zM��Rf�#8G�=���]���'�7AA�߁�yD�4q����C�`7��/��+G)�%�T <��MF�s[':j�D`�����$�4�b���18��.'~��|>~*��jg�B��0i�oE8�5W������`}M��|���+������<6S҉��ݝ�z�8��D�n�ۺ�_m\w�o���� �q ����!�F���fN���.��"i��^vj��N[e��q���Ab��#�g�ڵ��-���?3 �2�@ ��"�ug*�u��]P0F�pq��δ3��ƾ3�`1���.UP���īe���Yb����D����7kVp��dh��L�δ��K=Q-����Y�Q=L�^�|Rr��E+rX9g$e�� Q{��{JY�ov�l�R-W��ɧ8넣f���"Q�в�K��v��3��*t��Z\��k==��馣�W��P8
gE�R��o�p)"�2��������7�=�&s-�b��,���;Ϊ�w��}t���K,u�3H-�/�3E�S�h=�94�`�J�1��M� -6vh�B����4-�vM�v��ָ.��C��UG�.�
���H{��y%� -�\lH���}�F���L�B�Q�k���yTW�߮!on��� �\{ &����Ҙ���+��������ֲFu�6|���w ;���su
L��$�szS~�;M�6Iq���&캂�}}Zpi0R�v��j����sJ�~��T��IA -�e���Q[�#�q���Swu)Iz�N�����7��AD>m�Ӥ���P�KZ�2��ӕ�GH4)��Q�m��U�a�FlҜ�mQ�|��������
ќ���B�連,X�)�
���G���;��$��.-5A
��$�>�������jS}��9}W3� -��"���BP�˾�(\�58{����@:��b�bVI{g�Q
�t��(ۈF�P ���G��EI'}K�d� -e�� 2l\?�o��h ߙ[��&�B��$�
���u=���BI��s����ʁ�v�WyW�k;R��-^�/�Ċ�`����H��Z�s���+��� ��f -3�w� W�*�B�G-�������\-ӱ}�B�|�$��ڝ^��ƅV�J��2��a�Q0���u�a��ֲۤ�k��WY���aS�fOx�M4���<�R��A�gt,9����x{��)�kb���g�@���[�]�Mm�<V���%�a�� -K���P#���\�91sn/T�ЄuT^���05�ic5`��bP��N =c9���I X�r��8�>m4�83'�u4���2D�e���V݀����OS�N�[�ʾ;����Ɯ!(`�2�?�88��:)t��Wh,^J�_We������ޚ}�� gC��'Y�4���'�^�iU�z
J�5j4�Vx -m6�[ w]���&5�һ�kt�r�h��SWs����GEݺ� - ��
<�a5�b�]ѩ�qu�z��6���y�ݼ�s�(�"�=)|e��b -����VuF�i&�-�n��fw���vYDƢT� [��#c�?厼CK�UV�o���v��Ж"���cX�Hlr4|�h��b;m� �L{���}�O{�6[�i�K��O�����i�9E=~��L���dV@3������������J⥑�BڪN��E\\h�|I�3*�.� -]�4�y�I��d]U�+�]�T���Z^!�{��mut0���=�����\"nP 4yb8�Μw|t��^4��zK=�||��q�iN���]��K�ļHs4ͮU����.K&Y,�-SJ��(����<�w��Y�6�D����o߳��ﯦ�aظGH�Ϩ.u���>A��2�wi�״��t��K�^�Sr���+�2�ذR8��ȇ��V��H�x�dڮ�����x����0�F+�������g��A��t���?��9�����lǩ�"N�_�"����3a�d3�s���[�$#�J���� -���!�I� --����s0=VИH=K ���B�� }~A��j,�Ѿ��I� ��P{�R2��v�{����R|&����'%�:�#D[�{r�d4������\P�w�k���˝�ha�Ͳwk��+�� �1��9�EH� -km��̥'�o?ev��c5�������>�J2��i.��BZ�k -����`.�|�RrS��5�����M�U;`*����<Y�E,7�W�����ةn<u�y:��)M��` -ͣ���"(4�*_�:�ࡘ�.��3_�^��DFp��n�}ëS�?w���Wp}� -��שQX&P���s��������ٮ���5we3��b�kޖdX ���:C�ɝ�k"(���Ἲ�����E�c�U����iw��q��S����aowvi�yې�e�K��B�5xA��'�,BShL�{�'�e -�@�Ϭ.ji��8���o��لk� +x���Y��F���_�M�������G���3�f�=Z-�O�}h�Mqw�X����1�{��D�H +�y'_m��6�G3�4�K����8=_ +GR�W�0cI�]���b���i +_ț��?X��_�WJ��p����~���c[07<��n�n���n������ +B'�"�B`�� +�ew}v��ē$䲼�J�PK�+d�{�����R^[���+�ɹe��/W1����mg}�є���X_x���3c��b���c�ژZYA�/�>Ć\��L�r^��E[�~,�w���VH[����SW5��q;%��f��a��Yr����
u�������!G4���ٜdR��-�+����D �w���lF�E_A��}?��܍�:�����,�;f�Ф���=X)Q�����1�߷� +6�P�+�7�5+Z���o�dnlR�-LE�|�J���.�}="xkF� +v)Y;ǁH�}�w�������ڂ3���v�5v�Ό}q�ձ`���%8�� ������5@e�oO�g�1����r߀�����O���:W�9�� 0�>P��(�"�^A��ػ��KQ@�GV��]-h��ػ#hb[*
�ꬨ_�|��<l9I�Z4��R��K����(aҿt�u��</���u*�����q�R��i����TW.�F�]����B��k����t����ZI$����9ic[��Ա&=xI��s�cǩc1}^�ؓ�c�q���\��:�9T�.�AȻ��E}l���%h�a��:vX�}��
H��<�z�
�K9� ��K9[G�r��/��� +�z�C�2"�ۧ����y�zK{n^k����ґ�� A���C���ulH�Ԛ�C��Bb��O��`�U�PM�V�0��">M���w&�( �:�� +���K,/=vSF��4���0y)�k Ty^���K�}*M�@-8h%Ac<��ReQƳ�z��j��t� +�.evQ�u�oYr5�p���������ch�@� +��ⴭaMPC���mn�1��y�O�Һ�K�[y�xkS�s�uO�֑:�� Н����:���-�QF6�j\!�ȻԺE��0=��ws���L�j�t��+���P���'�<m��8z*m��p^��06>�c�O䨊����?w��Ryu���.�P��Y˛�l�����V~H1.�2�u���瑋\��J�2�D�fë���N�kZHy0.1P���<=k%5��ij �S$��A������Na����Վ�J����3���m��ʎp�݅�<�]��mʛR +�� <4�;q>� +���f<b'70�}|��'�\����W�VT��F�:�晸�@;����a�sG���
y*�� +����:R�F
|< +#B��p�9�&��O�1 KbT�y[�&�f���"K�,��c,R��>xn�"��)
Ѷe,��$�PZ�r c���̸��~4��CzxF�q������/��.��UNWaP!H'�.#�5�_�w���e>�9=�!G<7���`�bNK��,7sm���F^��t_��8N�&S�4B�;�q
e90���ܐช�n�x��AxA��p\6���+8aT�7��1�ϖ
2����|MU�,�-��6��l1��Ů�[�1Qqrk�ߜ��#��hg!�)�8�S��#A�{1�9�L�����ʑ �Y)eZ��~X�ǭ�#L�����ٟƀ"a�( �Z;�������MDc�u�I�$��6��*�oG�S�2�� Xs�i0��X��!{��\?w�E#�3�� +/��,7��4)�}!�� +J9{ʋc�y�@���y����'哪^��$��r��8O������U���X�fG8+��k��#�2��X���T�{D��Tz�s�tn h���d�MjӮ"ӹ�`=g���%S���g�u0�%ҹ��$���4:oq��C�-���[MOJ�(4x����tz�S ���dncJ]�TȔ���jH���%&ϲ���ͭJ՟s�K��eM�� +��6z�$���M�4:{�b�R�.��H�tn|Xg;���F0I�,��]4>�o⽃e϶�}Q22< +��y�d����km��pMF��2����\?�=
eya��+���8N��C����l�s1x�}5_r>�����0�H;��I��^�oȭP:��!8!*G�`�9�d����G��罜F�Z�M�+ˣ
��������"E`�эj����� +�cY����\��_�Z�6G�W���W?�m�nP +[ü`/j�A��������)e�+�>��0UR�WS7m!�q���&����C�Wlh�Wyˌ=�����@��!_�c���FO��ěC%ɺvoi3����z�ȩ��R���
%���BDn���>�>��_S�б�ͣWf)(�Y�n���pW)C8W�<�i�Å��Y ��I=Ӽ�k�jt����g���Aj��f��*+�2���7��?]�Vx��`�ߜ\q�g��1E�m��(Ay$��:����A��$�z��j����j�P +��I�w +����Y�퉶�33���|c���jYJ�V��
�.�����z�����kۡ
��v���[e���o�i�ʖ�������\jE^��n��T�ԡ���η�L'(�@�i�҂�6�Su��4k����U5X: /R���٘��,*I�]rA���8aX�P?l��̛f�"7�[�'+h���(��V�$��ލ�B"?�5�+ʣ3`�������#N�����9�G�N����o�i4S���p)8�ū�*�y�?S��3kI���g��h�5��u3�Gq +ӊ�Q���`�D�g�r�2�x��U ��u��/��n�PW���c� ��>B�U��5Eh�_�Y��Ш +
]�F}R�������J��x�\���kD[�OI �I�ې#W�]�����W�H�����{�"���\gd<8N�謋�8���k�Z[���P��R����*��^���ӹfU����+=���=k��\c�C�N��%�aWH����yzd�u?ٮ>u!���3R�l��D�rK�ܩi�����4q��k�7��ܴ�c�6��7[6]��#�M�s{P9���W8��z0�D'��]߲�fn6j�UR·������ۍF�f�j7`M�"���#�E��qnTn1�5�'�w[��n)�յ����lAuHm��M=���IFϵ��|�
rп�z�%�/��������U�;Ljj��Uu�����A_�[�ͥ�-�;�Js�Z��8h@Zm�f�� 4儔�B��5��1���1�
�<=6P���-�����ҁ���)ȿs>d����D*0Vw- +��f�� �Q=
��y��ѐ T币4}�J�����*OrK���P��`��O���<����|j@� +>�N4kLT����"ULk@�+���wT�-��MØ>mb�Dl氆y���=/���z����_mS� ���\;�q�v�T ��������p�a�uo�a-���t�E*��|��Zl(�]h�J�w�Où\=\G끣e*T{0n{�ڝ����ɲ��%8u���69Z��=Y��BZn���[���Y$��<���;(ڂ6�:(W;(�4j㊓;5�kӷm�����w]�����v���v��,}���M���7�y���Ф/>��=|+���uQ�UԹ��#����]�?ֈ1~�)�M߸�U�K�]��NYxm��M��^o�7iXs�(��uI���b +˳5t{�E
��}�*@���\Ca��ظ�"��j(�*��w���ة�"�nK��S�p`;�6#�G�YC�lFM +j��
)PyZKc���d��l�@9���X���8!�����?pji+(���V ^L�;��k�z5o���rYzc�y(@��ǥ(H�vpg��[��rc�y�)��Ŵ�U�Bk�"B��> ��0�b�)�İSp�� +��>Kx�%T��� ���K�r���|��RZ�����ܵ���U�s���{�����,��x>s��07M���?�Q�b���s=���ʉ���j0Ʒ���97�!9i�v
��R{)+]�b���CD��U��1�'����̮##+=��=3�Ҳ��3��;V��6S����
l&��=9�.�Z�G;��F{��lp�Ԯ�]!�4�[��:L��c\�F[�J�+>�(��D� ȋVn�����V�H��Yw��$W�%Y����]Jh��7k�0���>r� � +�����Q���M��������i�Baf����-�&"\ˀN�?(I�(d�([R���x���c2P�3��̨��r��5��Cc*Jc�}��Uӵ%i��c-1�n���`W�+�t�>�|�+w3է�{TJ�g�`#/�o^� ���J
A>&ڐ�SW�(c>в�#���;�B �hňɁ1F���k�a0��[̄�"���f��ቁ��lɀ+��e7q�]J���2"���#�J��$�\ +o;���e��J�W���bs�*�b�[���t�T��ʂ��S����m(�c��?A}� +Ί��� �Z.���RyP�s�$-bGs?(#iT�.��B���B��
��Ջ���AR`��Ў�h.~��72�/�[�=f.�*�.�݉���N�%�nKS� +��7�-���x&m��ie(�U6'��u=�*
~� �#� +�Jt�ⶍ&���w�y�v�!8-��}$�ʁ�[f�U�d������u�k1t���a�_����%�P�"-\q�IzBm�M��$88#���y�n�3]͍)8�l�C��fgɧϿ��yN�����9��m&Q��W�ϥ�R��S��5)�%T�@�k��5�a��Y����j���Ƿe��nO���]yu8�DV��1ד�����M�z��
e+
<���p7]��W��!�U]ş��� +{�~ͮ�]Q
���3��S[=l������~_Z�vF���hE䥫�$�KWy~]%���\��*�)P� g�J�4�4�%�]�ʲ�2��J��w���2� m�rc�ڱ�Ԙ�D��X���aH���Ad����+Q�5�]g�MC%�0�T�L*��)��s����i�5�y�qE�� +\� Nq��^���";�w%�7?�?Ss��JZ|kZ��ϵ��^��u����r�<#�����6�D�"�ݵ�[���28��1��ܭ�<2���{^p�YZ������g����h�IZ{۪�x����ҷ�C��X��*�3���s�_���{�u��r�d��t`W�2y �����[s����Kifs�&i +������]��n��� DY����}��f�ӦU�_V��r�E7�V���i$�/j�~�5�B��0@��5��!�*nց�]Q�Ϻ@�Vf,h�c�d������Q����2ijm���n�k�fkx��aV 8�t#��75N� ��Zc,�PE�k�p�75X���?VWp�8Ώֶ�v}�SZa�٬)�B��L�R�&w�������^װmj�v\�9��_-�}�� �vU�s<�(ӫ�MĜ"��H�ŜR �p]��R�/�[�=s�*s�� ����5�nK1g�Ŝ� +Pj�4j#�F>�7���5%L/u�w =5M ?šnڷ"P��9bT ��1�@����~� +��f�B�Iɍ�Ț4/��d:�W���K�!�"N�V6��U�aUs���v��u�
�P��H-Zv6�FY|X��M�d�}3~Nn�,�����cu;gYٝRgg��UA#�UH�,ow3��B��\b�fa(���K,���2�]������`���!�r�jk��I��zi�(���J�C�)*�����v�s_v�u��� WI.x�#�+=�N?B^Tz�5?Bل����M�2�:��ɔ�g���k�X2r���VY���D\|U�Fdu;��g,�������Vv��L��������l��Ջ]%�1b-��=b/ƽ�q���� +nXr�,2��p�a�HQ��w&&���� +h��e�y�lv�|8��G��9I��W�(N6�ar"��y,,��/�#��L��uq���M��UZ)�r�s5n�y +�A�q�vhfD��?�A3����͘�1��,��7��Y�ʓ&��x_��j� �HP�q�VVj�D�� +z�ENK4��`́�}���M(���mAI>WM�=�L���t�S�tk8I�1��rŝ��+$�����]6��i��[��Qg\�iU$H��=�U� +���
��I��S�/���m��P�[�4�\%^O��R1�+ɨ����V�#'@��g�] +`������R��u�����F�S Tzh�~��Ő�b�<�J{��XC ��0SI1��+Đ�1��S1�sY���] ��ږ*c�z���P ��1*���A$uEw�P#:���'��#x)��]�zX��r +�=9Wٚ��<����j��5��$��xS�&�^o�u�;Nr�綃�p�k)�ɟ���å����ϝ�ǚ-���� zP�J�e��1Ku�$R�&�b0�a��&��aq�,R�&��ǜ� ����V�7qyG`2���¨ +3բ&��aq��XC�c�jb�5�>�B�K���!���#S �B� +����ts�Ҳ&�J�~��&�THS\�y�W>,�8���I[d���+�6`]��z�Hҵt��s�j-[���Z���x��*4�[V6�8�7 +��t�3J��'��Z�Bi��х��L��w'�N��5�����p~�Y���A0)�ھL�T�T�r>I��SXli��$��a1$ ��Z�w.�~�8|�s����-���LVf��;Y���U�����u�� ��Jya^~:+�*�1��Ҫ���+z����>�z~s�ɽB�a��J>�*�y�����}?V�����H�t�a��%��@�Iܓ"�-��/I-��P�)\�4=z�?�p�B���EO��t�US�����G��l,�5<�o�?�Z���kB�PS�=��#{J��'�S�����#�C��d�>[��$�j���������B�t��s�i5��� +����gc�4yA���=��!�['�1L�z^��h��������N��HI���S}���'OLU0�?W-���j�9��Z����d���Fl�t�U�j_m���� +����B�Q��RG-�?f�LI(�a��p%4=*� +�{��BO �wx��*�T�9���o���_T���p�l��<�>�I&��ya��8f�;0���`��`уu�7f�X� �z?9�\|�j�Y +\s�T2Hz^�~���2���a��&[lb<w$�+��wP�j܁�8��s����"(�����ᰜ�B6�k�qA%��m�Ւ���^�WG�j*pWr`3��4��u0O��Vb�4�J�����7IR
c�eI��f�TB�%l���b���"Z�]�9N.U���S8,V��vX\!�+��|�QM45GܶN��G:�Oۮybh[��ɥҞ����v���c��y������W��&a��&��7���B]�U��p\SU�p�FRي�:m�&��--M� +�o#Y�y˭%A4�by{ +Z%� WK�h��m݊#9�C��{j/^�s�x�!���*�|�n�y1�Nadyڱ��l�E��2�xYT�{H�<����F��WȢ¤�I���Z�Cs�m�qx��'m+�7���3��ª�$*���r���L�ps�$*a�$Qi�ۍ˚�����S;œQ��K:m�N�a��t���Sa0n$�b0�a��T��X\#�*�O��Z�C{�Ѧ����y}�{����ME8�
7��F��ʧ�I�QH�˼|�3c�;g���]���Z6&�F�IY0ިӇ:�´�H6�`��b�r#���+dSa��$��G\5�=�6�u�x�ր�>}9S�seSaLk$�J;�r�X;�xh�ѽs�O���jB�t�u�x�&D�`��e� ��x���*�w����+���Ss��-��F!z��S΄��3aTaVk$�J;�f(LV�tL���N�%�6 � �H(��ҟ�F��FB)��Z�|h��B�0]tJ�#����qR�J<�iRϝ�W���<����H �v�@����X�ɦ�c�Ap�5m���W�G�T5+�C���Sa�k,�"0Oa��q���j�����ky��^={�Y �s�� +^c~[��cnj��(kϿ�-?m�����No�PM�QJ?L�W�`U���jC[�07��9��O���T1�p$5yA��Xf��+;�_,nva&GGFoh�A��fi���c-�i��I�Z�|m�틑ٰ�A|~H�O��(k�&zP�i��ˤ�C�;�"�)�d���d�GSG'̩�F�#�h�,�e4��v�j�x +��uU�`�0���� +�p�fhk� u�Ra�������7��/L���r��#�k@�_dP����`/k@9��c7ȝ�8tI�ѱJ��U��k�����$��Ȏk�N>��Z�\-�0-�{A�ܒ�=�)0:Buy�Hfssuo|{�&� +�z��Q³nb�P�#�h?>!p����he,�FhX{��I|<���ͻ���M{�<�P;p�i��w�<7â4��*�J�2�j�Rj�~��X��V;$��i��+���s�څ�@��>V�S4��I7,"���mu8WpT ���..�a�;�ۚ�C���_t�|�7gN�Q������i��g�\Cb��XVEK�/=h����ʂ�:Ś���v���������f?V�xӭ��$xC�Jv������o�+5Y��U����m����d@����ɽ��o��� �e���dI@kE��Oû��K�J��fi�ѣuBQ�_�>��Ǧ� ���5�۸�M`Ptl)B|�k[���<%��
H� +�=�4��~ +��s?ƪY�^,��$��q�]��f��Zꄟ�Ӻ�T��iVl�N��Z�ږ��<ޒx@O�Ê��+3י�t�L�V��0X!�x��_��0�z۷�X�{})��]8���}��:�g�~��ߘ�Ħ���L�уG���1�^`N ��O�7��)"�\6
/�g!V;��U��~��\p�
2k�*4)4��)�
`�e�=�J�aܖ�`�T�}H$���Z��e/�� �1�I���M��iB[u0�
my��iP���g�F�'�BP�T�>��"m���U�m��
V%���l���Bl�]ӈ���MB���wY�UU��ݾȗ�
i�윣穬C�w}w
�H�y�����R����+���/ګ���cR>d�����y2y���Y����;�:��hԥ�ڂ�F�E�.ʐ�`-;����!�u�,.�ZKi��<��}~^
�Rj�#8ɭ9����\����@(�ۣ1�G�������A���agwsvNb_�5 �v�Y�����@��"��L6���jBR�~�Y{��x ��.����o3~*���.��
�<�'���5�ĸ����#+Lf��+h�[=�������Ύ<V�c�I��}����X�тn�Qa�H����x 9���}���_��9!���d��p�J;��<^)p]�P�W���]��li
R�^���%<����i�������^��2#�P�2�ѣ]��+ä��+�d)�Dc��&'輺zW�2 �ȳҔ;)#/(f)����o�4����N�WP�;������b�m��70�������$%@[+�m�+��Tf-NVD�� +^)i�[qī�+�\���XrF!X'�j���_T�*�
h�j��� +��F�sODa�xP����VNFiJ�ɷ3�OI�.�ֲ��<�̶*���lхq�J2!�$�n��,-)�èĂ�g ߞ�s_Ȣ�<w Ʉ[f�6����<�<&Z ���=礹�V�\�M�Uv-,�ڴ>(QZ�P�tWg+̬��@8M��(�g`hI�������8�:��N�х��ZJ�d�=�>6K&�{��k��T;n^nZ��C�d| +�S9t����ڡ�Dš˹��b��-��y��X!<˃�����K�!�8}�Bg��1ۇ��1�����ك��?%��iquͰSs�HY ��ܧ�8���߭�`Y�
��`����v7抽�Z�0'm�ks��p �S�xu0�5�T���w@����~���)�g9w����jQ��D0.�� �}���!��J�!�[a�ʜW��=g��'?�u0O>�7�F !55>���'oP��~(v�$�y����7��r_l�5o��i��4ES������c���h�Tୢ�m�h����:���)�{Ӂ�e'==����5�G-��G�9��q٣�>��������xk��y�����<W�i����J��X�~j��2�:��U��-���l<v���*�1� �-ì�.�2�'$0ݹ�G��Ժ��b�2��Z���8�
1�D+��l#@)#��X3��hP�5��X�X!�ײ���M��#�E +�וu���d7��X�*t��*�xO�o>�?�r!7T���s�F�a���x+���VU�~�+�j�c��ѬyeI�R_\�n�T��?c��qXSP���.k�HbM�!�%HQ6U�gJ�}���n��XzeX'-�kM�w�I22&7��qS�0,]��|k�sTR�a:����
wE�������*�+DT`��]��� <(�`n� T���m���0̾S �k.bW�v���A0�v[�,�^r�F&��u����ԯ�i�9���}��ћ�l�y�s�c�Y�ڕ��UN{�t\���=�?6�Y��h���G���@���:�f�`��F0M>�ps�ĭׁۖd�)�7��+���Pv���,�`jLȳ��B��4�8�hڃjc��L�IjN��x���'��`�d�9�~(�?o}�Qv_뀜�����ԗ�sV��y>5uJ�ܹ�R�!o�=,W�ܰ�u��Y l���ur�ң�}-.Wx�� &Kt���|u@ʕ�3�]g���繞?W�X��C}矊�ip���� �am��iX��s��[P��Z�zp��r�Z�Z��}\@��U��� +6�v|����y�;
Z����H5���k��(�/�\��6�H]�`|Z���N
y���ѝ�8+z�������S�O�F����J2�v$�43��S�"4.L)��ܿ��C��F�Z��"$Zt��~\���>����Ps�!����o�O�ަ��w����ƆT��sc���^���{��h�l�U�����)�'V�[W(�z�>�fO�L���.̿�4!�y��Η;d�G�{�(� k/��˥q��i�vr¢A��&)�0�� +�֙v����{��7&�+��C�`9�Fʀ߭d�k�+/�������bv�����QĚ�qNs"I�g�2��](~\~yS���9)���`�=����'th�f�Tg�)No�э]Aý�U�d��F7 +�Y�ԥ�wA�6���ޏ� �D{� $.�ԷY*�b˓0t04���&s#������e�n��!�����2��;�Ã� X�b�Ҙް-<A�[�h_�/���
~� l�7��� +���u��I���(��I�,��3�0�o<pRdeK�[�PMOʇ���p����@`���������V[#��a�Ӷ�ӆ�3s�9sf�B��C��}:���*,��\�Uu���0�"Քʀ��_��[��=^R0P��r �Gi����/�H %��G�$��Y͚�b�l�ȣ\� +�C�x���UÃ���ЀʥM��#7_#����[�Z�_��\��P���q��l�J��t�^ա{u)rr�6]���9�@�VΩ�>�8�C7F��Ŗ�� +��ه1��O+��!�{��e��d>�(�S�� ��6{����:����szIW���i�O�S�����_A=V<�:<��5�U�c(o�;n��,c�����Q�\���G�������ぷ��G!ł�T�^JY�?p�W2�9�ॴ��>l�} m�m���La2b�3�KR�c�%j�J��ԓ>z/Fo��ϼ�QD��̸T%�a +c# +$0Lg�H�=D��q�1 @=�J-� +�v'�5 +���`�F� +�9� .��j�W +A)���Y�J�9����+���h�feM��$XmR�Ҁ��˵PN�C��)��s�w�|�l��x1
��i���K�(����Fּ�na����+�ֶ��_�Z6��+����)���`�k&'C�|�Z���W��n0�G�������{��quKi�D��2�R��/�I���mM�z��� +��&b�UQiB� ��eV��|���;�����!��3�� TsTc�jy_�'0�9�h_n��PS��N<z��s��8��09m�D�\H����w�����*f�k�e4 �@U_F endstream endobj -407 0 obj +437 0 obj <</Length 314/N 3/Range[0 1 0 1 0 1]/Filter/FlateDecode>> stream x�}��Kq�?�U�X
94%MQKS��N�#Ԧ��Q�v��B�ˡ�h�Fk ������! @@ -1495,20 +1609,20 @@ x�}��Kq�?�U�X
94%MQKS��N�#Ԧ��Q�v��B�ˡ�h�Fk ������! ��0l+��ߣ�y7���;����;Q�?V.�_�tF��3L�E�K�)y ��z�80e�IP���k��T�/%[�p endstream endobj -408 0 obj -<</Creator(Typst 0.15.1)/ModDate(D:20261001125720-03'00)/CreationDate(D:20261001125720-03'00)>> +438 0 obj +<</Creator(Typst 0.15.1)/ModDate(D:20261002014436-03'00)/CreationDate(D:20261002014436-03'00)>> endobj -409 0 obj +439 0 obj <</Length 996/Type/Metadata/Subtype/XML>> stream -<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?><x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="xmp-writer"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" ><xmp:CreatorTool>Typst 0.15.1</xmp:CreatorTool><dc:language><rdf:Bag><rdf:li>en</rdf:li></rdf:Bag></dc:language><xmp:ModifyDate>2026-10-01T12:57:20-03:00</xmp:ModifyDate><xmp:CreateDate>2026-10-01T12:57:20-03:00</xmp:CreateDate><xmpTPg:NPages>1</xmpTPg:NPages><dc:format>application/pdf</dc:format><xmpMM:InstanceID>DzyaajGJifpizox+vCC3sA==</xmpMM:InstanceID><xmpMM:DocumentID>DzyaajGJifpizox+vCC3sA==</xmpMM:DocumentID><xmpMM:RenditionClass>proof</xmpMM:RenditionClass><pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="r"?> +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?><x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="xmp-writer"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" ><xmp:CreatorTool>Typst 0.15.1</xmp:CreatorTool><dc:language><rdf:Bag><rdf:li>en</rdf:li></rdf:Bag></dc:language><xmp:ModifyDate>2026-10-02T01:44:36-03:00</xmp:ModifyDate><xmp:CreateDate>2026-10-02T01:44:36-03:00</xmp:CreateDate><xmpTPg:NPages>1</xmpTPg:NPages><dc:format>application/pdf</dc:format><xmpMM:InstanceID>laVFgD5BdtJEs88i4s7R4w==</xmpMM:InstanceID><xmpMM:DocumentID>laVFgD5BdtJEs88i4s7R4w==</xmpMM:DocumentID><xmpMM:RenditionClass>proof</xmpMM:RenditionClass><pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="r"?> endstream endobj -410 0 obj -<</Type/Catalog/Pages 1 0 R/Metadata 409 0 R/Lang(en)/StructTreeRoot 17 0 R/MarkInfo<</Marked true/Suspects false>>/ViewerPreferences<</Direction/L2R>>/Outlines 16 0 R>> +440 0 obj +<</Type/Catalog/Pages 1 0 R/Metadata 439 0 R/Lang(en)/StructTreeRoot 17 0 R/MarkInfo<</Marked true/Suspects false>>/ViewerPreferences<</Direction/L2R>>/Outlines 16 0 R>> endobj xref -0 411 +0 441 0000000000 65535 f
0000000016 00000 n
0000000069 00000 n
@@ -1527,401 +1641,431 @@ xref 0000001270 00000 n
0000001365 00000 n
0000001433 00000 n
-0000001600 00000 n
-0000006505 00000 n
-0000006610 00000 n
-0000006691 00000 n
-0000006834 00000 n
-0000006991 00000 n
-0000007059 00000 n
-0000007140 00000 n
-0000007237 00000 n
-0000007305 00000 n
-0000007448 00000 n
-0000007617 00000 n
-0000007685 00000 n
-0000007779 00000 n
-0000007894 00000 n
-0000007962 00000 n
-0000008118 00000 n
-0000008283 00000 n
-0000008351 00000 n
-0000008444 00000 n
-0000008555 00000 n
-0000008711 00000 n
-0000008870 00000 n
-0000008938 00000 n
-0000009032 00000 n
-0000009126 00000 n
-0000009194 00000 n
-0000009353 00000 n
-0000009515 00000 n
-0000009583 00000 n
-0000009677 00000 n
-0000009789 00000 n
-0000009857 00000 n
-0000010013 00000 n
-0000010175 00000 n
-0000010243 00000 n
-0000010336 00000 n
-0000010434 00000 n
-0000010511 00000 n
-0000010651 00000 n
-0000010720 00000 n
-0000010790 00000 n
-0000010883 00000 n
-0000010951 00000 n
-0000011020 00000 n
-0000011118 00000 n
-0000011186 00000 n
-0000011290 00000 n
-0000011376 00000 n
-0000011454 00000 n
-0000011611 00000 n
-0000011768 00000 n
-0000011836 00000 n
-0000011931 00000 n
-0000012026 00000 n
-0000012094 00000 n
-0000012251 00000 n
-0000012322 00000 n
-0000012494 00000 n
-0000012562 00000 n
-0000012657 00000 n
-0000012728 00000 n
-0000012799 00000 n
-0000012920 00000 n
-0000012988 00000 n
-0000013145 00000 n
-0000013216 00000 n
-0000013396 00000 n
-0000013464 00000 n
-0000013559 00000 n
-0000013658 00000 n
-0000013726 00000 n
-0000013883 00000 n
-0000013954 00000 n
-0000014126 00000 n
-0000014194 00000 n
-0000014301 00000 n
-0000014372 00000 n
-0000014443 00000 n
-0000014514 00000 n
-0000014585 00000 n
-0000014656 00000 n
-0000014788 00000 n
-0000014880 00000 n
-0000014955 00000 n
-0000015028 00000 n
-0000015101 00000 n
-0000015215 00000 n
-0000015402 00000 n
-0000015561 00000 n
-0000015633 00000 n
-0000015750 00000 n
-0000015847 00000 n
-0000015919 00000 n
-0000016102 00000 n
-0000016265 00000 n
-0000016337 00000 n
-0000016442 00000 n
-0000016539 00000 n
-0000016611 00000 n
-0000016770 00000 n
-0000016929 00000 n
-0000017001 00000 n
-0000017106 00000 n
-0000017203 00000 n
-0000017275 00000 n
-0000017442 00000 n
-0000017601 00000 n
-0000017673 00000 n
-0000017774 00000 n
-0000017871 00000 n
-0000017943 00000 n
-0000018122 00000 n
-0000018289 00000 n
-0000018361 00000 n
-0000018462 00000 n
-0000018563 00000 n
-0000018635 00000 n
-0000018798 00000 n
-0000018961 00000 n
-0000019033 00000 n
-0000019138 00000 n
-0000019235 00000 n
-0000019307 00000 n
-0000019486 00000 n
-0000019649 00000 n
-0000019721 00000 n
-0000019818 00000 n
-0000019919 00000 n
-0000019991 00000 n
-0000020170 00000 n
-0000020333 00000 n
-0000020405 00000 n
-0000020522 00000 n
-0000020619 00000 n
-0000020691 00000 n
-0000020854 00000 n
-0000021037 00000 n
-0000021109 00000 n
-0000021206 00000 n
-0000021303 00000 n
-0000021375 00000 n
-0000021578 00000 n
-0000021648 00000 n
-0000021734 00000 n
-0000021921 00000 n
-0000021994 00000 n
-0000022173 00000 n
-0000022245 00000 n
-0000022342 00000 n
-0000022451 00000 n
-0000022523 00000 n
-0000022690 00000 n
-0000022865 00000 n
-0000022937 00000 n
-0000023054 00000 n
-0000023155 00000 n
-0000023227 00000 n
-0000023394 00000 n
-0000023553 00000 n
-0000023625 00000 n
-0000023730 00000 n
-0000023831 00000 n
-0000023903 00000 n
-0000024010 00000 n
-0000024120 00000 n
-0000024287 00000 n
-0000024446 00000 n
-0000024518 00000 n
-0000024631 00000 n
-0000024728 00000 n
-0000024800 00000 n
-0000024975 00000 n
-0000025134 00000 n
-0000025206 00000 n
-0000025319 00000 n
-0000025416 00000 n
-0000025488 00000 n
-0000025663 00000 n
-0000025822 00000 n
-0000025894 00000 n
-0000026007 00000 n
-0000026104 00000 n
-0000026176 00000 n
-0000026351 00000 n
-0000026510 00000 n
-0000026582 00000 n
-0000026687 00000 n
-0000026784 00000 n
-0000026856 00000 n
-0000027031 00000 n
-0000027190 00000 n
-0000027262 00000 n
-0000027375 00000 n
-0000027472 00000 n
-0000027544 00000 n
-0000027719 00000 n
-0000027878 00000 n
-0000027950 00000 n
-0000028063 00000 n
-0000028160 00000 n
-0000028232 00000 n
-0000028407 00000 n
-0000028566 00000 n
-0000028638 00000 n
-0000028743 00000 n
-0000028840 00000 n
-0000028912 00000 n
-0000029083 00000 n
-0000029148 00000 n
-0000029315 00000 n
-0000029474 00000 n
-0000029546 00000 n
-0000029659 00000 n
-0000029756 00000 n
-0000029828 00000 n
-0000030003 00000 n
-0000030162 00000 n
-0000030234 00000 n
-0000030347 00000 n
-0000030444 00000 n
-0000030516 00000 n
-0000030691 00000 n
-0000030850 00000 n
-0000030922 00000 n
-0000031035 00000 n
-0000031132 00000 n
-0000031204 00000 n
-0000031379 00000 n
-0000031538 00000 n
-0000031610 00000 n
-0000031723 00000 n
-0000031820 00000 n
-0000031892 00000 n
-0000032067 00000 n
-0000032226 00000 n
-0000032298 00000 n
-0000032411 00000 n
-0000032508 00000 n
-0000032580 00000 n
-0000032755 00000 n
-0000032914 00000 n
-0000032986 00000 n
-0000033099 00000 n
-0000033196 00000 n
-0000033268 00000 n
-0000033435 00000 n
-0000033594 00000 n
-0000033666 00000 n
-0000033829 00000 n
-0000033894 00000 n
-0000033967 00000 n
-0000034064 00000 n
-0000034136 00000 n
-0000034209 00000 n
-0000034335 00000 n
-0000034407 00000 n
-0000034479 00000 n
-0000034558 00000 n
-0000034640 00000 n
-0000034730 00000 n
-0000034802 00000 n
-0000034874 00000 n
-0000034947 00000 n
-0000035020 00000 n
-0000035093 00000 n
-0000035223 00000 n
-0000035295 00000 n
-0000035410 00000 n
+0000001610 00000 n
+0000006803 00000 n
+0000006908 00000 n
+0000006989 00000 n
+0000007132 00000 n
+0000007289 00000 n
+0000007357 00000 n
+0000007438 00000 n
+0000007535 00000 n
+0000007603 00000 n
+0000007746 00000 n
+0000007915 00000 n
+0000007983 00000 n
+0000008077 00000 n
+0000008192 00000 n
+0000008260 00000 n
+0000008416 00000 n
+0000008581 00000 n
+0000008649 00000 n
+0000008742 00000 n
+0000008853 00000 n
+0000009009 00000 n
+0000009168 00000 n
+0000009236 00000 n
+0000009330 00000 n
+0000009424 00000 n
+0000009492 00000 n
+0000009651 00000 n
+0000009813 00000 n
+0000009881 00000 n
+0000009975 00000 n
+0000010087 00000 n
+0000010155 00000 n
+0000010311 00000 n
+0000010473 00000 n
+0000010541 00000 n
+0000010634 00000 n
+0000010732 00000 n
+0000010809 00000 n
+0000010949 00000 n
+0000011018 00000 n
+0000011088 00000 n
+0000011181 00000 n
+0000011249 00000 n
+0000011318 00000 n
+0000011416 00000 n
+0000011484 00000 n
+0000011588 00000 n
+0000011674 00000 n
+0000011752 00000 n
+0000011909 00000 n
+0000012066 00000 n
+0000012134 00000 n
+0000012229 00000 n
+0000012324 00000 n
+0000012392 00000 n
+0000012549 00000 n
+0000012620 00000 n
+0000012792 00000 n
+0000012860 00000 n
+0000012955 00000 n
+0000013026 00000 n
+0000013097 00000 n
+0000013218 00000 n
+0000013286 00000 n
+0000013443 00000 n
+0000013514 00000 n
+0000013694 00000 n
+0000013762 00000 n
+0000013857 00000 n
+0000013956 00000 n
+0000014024 00000 n
+0000014181 00000 n
+0000014252 00000 n
+0000014424 00000 n
+0000014492 00000 n
+0000014599 00000 n
+0000014670 00000 n
+0000014741 00000 n
+0000014812 00000 n
+0000014883 00000 n
+0000014954 00000 n
+0000015086 00000 n
+0000015178 00000 n
+0000015253 00000 n
+0000015326 00000 n
+0000015399 00000 n
+0000015509 00000 n
+0000015635 00000 n
+0000015822 00000 n
+0000015981 00000 n
+0000016053 00000 n
+0000016170 00000 n
+0000016267 00000 n
+0000016339 00000 n
+0000016522 00000 n
+0000016685 00000 n
+0000016757 00000 n
+0000016862 00000 n
+0000016959 00000 n
+0000017031 00000 n
+0000017190 00000 n
+0000017349 00000 n
+0000017421 00000 n
+0000017526 00000 n
+0000017623 00000 n
+0000017695 00000 n
+0000017862 00000 n
+0000018021 00000 n
+0000018093 00000 n
+0000018194 00000 n
+0000018291 00000 n
+0000018363 00000 n
+0000018542 00000 n
+0000018709 00000 n
+0000018781 00000 n
+0000018882 00000 n
+0000018983 00000 n
+0000019055 00000 n
+0000019218 00000 n
+0000019381 00000 n
+0000019453 00000 n
+0000019558 00000 n
+0000019655 00000 n
+0000019727 00000 n
+0000019906 00000 n
+0000020069 00000 n
+0000020141 00000 n
+0000020238 00000 n
+0000020339 00000 n
+0000020411 00000 n
+0000020590 00000 n
+0000020753 00000 n
+0000020825 00000 n
+0000020942 00000 n
+0000021039 00000 n
+0000021111 00000 n
+0000021274 00000 n
+0000021457 00000 n
+0000021529 00000 n
+0000021626 00000 n
+0000021723 00000 n
+0000021795 00000 n
+0000021998 00000 n
+0000022068 00000 n
+0000022154 00000 n
+0000022341 00000 n
+0000022414 00000 n
+0000022593 00000 n
+0000022665 00000 n
+0000022762 00000 n
+0000022871 00000 n
+0000022943 00000 n
+0000023110 00000 n
+0000023285 00000 n
+0000023357 00000 n
+0000023474 00000 n
+0000023623 00000 n
+0000023695 00000 n
+0000023862 00000 n
+0000024021 00000 n
+0000024093 00000 n
+0000024198 00000 n
+0000024299 00000 n
+0000024371 00000 n
+0000024478 00000 n
+0000024588 00000 n
+0000024755 00000 n
+0000024926 00000 n
+0000024998 00000 n
+0000025111 00000 n
+0000025208 00000 n
+0000025280 00000 n
+0000025455 00000 n
+0000025614 00000 n
+0000025686 00000 n
+0000025799 00000 n
+0000025896 00000 n
+0000025968 00000 n
+0000026143 00000 n
+0000026302 00000 n
+0000026374 00000 n
+0000026487 00000 n
+0000026584 00000 n
+0000026656 00000 n
+0000026831 00000 n
+0000026990 00000 n
+0000027062 00000 n
+0000027167 00000 n
+0000027264 00000 n
+0000027336 00000 n
+0000027511 00000 n
+0000027670 00000 n
+0000027742 00000 n
+0000027855 00000 n
+0000027952 00000 n
+0000028024 00000 n
+0000028199 00000 n
+0000028358 00000 n
+0000028430 00000 n
+0000028543 00000 n
+0000028640 00000 n
+0000028712 00000 n
+0000028887 00000 n
+0000029046 00000 n
+0000029118 00000 n
+0000029223 00000 n
+0000029320 00000 n
+0000029392 00000 n
+0000029563 00000 n
+0000029628 00000 n
+0000029795 00000 n
+0000029954 00000 n
+0000030026 00000 n
+0000030139 00000 n
+0000030236 00000 n
+0000030308 00000 n
+0000030483 00000 n
+0000030642 00000 n
+0000030714 00000 n
+0000030827 00000 n
+0000030924 00000 n
+0000030996 00000 n
+0000031171 00000 n
+0000031330 00000 n
+0000031402 00000 n
+0000031515 00000 n
+0000031612 00000 n
+0000031684 00000 n
+0000031859 00000 n
+0000032018 00000 n
+0000032090 00000 n
+0000032203 00000 n
+0000032300 00000 n
+0000032372 00000 n
+0000032547 00000 n
+0000032706 00000 n
+0000032778 00000 n
+0000032891 00000 n
+0000032988 00000 n
+0000033060 00000 n
+0000033235 00000 n
+0000033394 00000 n
+0000033466 00000 n
+0000033579 00000 n
+0000033676 00000 n
+0000033748 00000 n
+0000033915 00000 n
+0000034074 00000 n
+0000034146 00000 n
+0000034309 00000 n
+0000034374 00000 n
+0000034447 00000 n
+0000034544 00000 n
+0000034616 00000 n
+0000034689 00000 n
+0000034815 00000 n
+0000034887 00000 n
+0000034959 00000 n
+0000035038 00000 n
+0000035120 00000 n
+0000035210 00000 n
+0000035282 00000 n
+0000035354 00000 n
+0000035427 00000 n
0000035500 00000 n
0000035573 00000 n
-0000035646 00000 n
-0000035719 00000 n
-0000035792 00000 n
-0000035922 00000 n
-0000036011 00000 n
-0000036083 00000 n
-0000036156 00000 n
-0000036229 00000 n
-0000036302 00000 n
-0000036452 00000 n
-0000036524 00000 n
-0000036623 00000 n
-0000036706 00000 n
-0000036779 00000 n
-0000036852 00000 n
-0000036925 00000 n
-0000037051 00000 n
-0000037132 00000 n
-0000037205 00000 n
-0000037278 00000 n
-0000037444 00000 n
-0000037525 00000 n
-0000037598 00000 n
-0000037671 00000 n
-0000037797 00000 n
-0000037899 00000 n
-0000037972 00000 n
-0000038045 00000 n
-0000038118 00000 n
-0000038232 00000 n
-0000038346 00000 n
-0000038505 00000 n
-0000038668 00000 n
-0000038740 00000 n
-0000038837 00000 n
-0000038938 00000 n
-0000039010 00000 n
-0000039169 00000 n
-0000039242 00000 n
-0000039417 00000 n
-0000039489 00000 n
-0000039586 00000 n
-0000039683 00000 n
-0000039755 00000 n
-0000039914 00000 n
-0000039987 00000 n
-0000040162 00000 n
-0000040234 00000 n
-0000040331 00000 n
-0000040404 00000 n
-0000040525 00000 n
-0000040597 00000 n
-0000040756 00000 n
-0000040829 00000 n
-0000041000 00000 n
-0000041072 00000 n
-0000041187 00000 n
-0000041317 00000 n
-0000041390 00000 n
-0000041467 00000 n
-0000041561 00000 n
-0000041921 00000 n
-0000041958 00000 n
-0000042009 00000 n
-0000042060 00000 n
-0000042111 00000 n
-0000042163 00000 n
-0000042216 00000 n
-0000042267 00000 n
-0000042319 00000 n
-0000042371 00000 n
+0000035703 00000 n
+0000035775 00000 n
+0000035890 00000 n
+0000035980 00000 n
+0000036053 00000 n
+0000036126 00000 n
+0000036199 00000 n
+0000036272 00000 n
+0000036402 00000 n
+0000036491 00000 n
+0000036563 00000 n
+0000036636 00000 n
+0000036709 00000 n
+0000036782 00000 n
+0000036932 00000 n
+0000037004 00000 n
+0000037103 00000 n
+0000037186 00000 n
+0000037259 00000 n
+0000037332 00000 n
+0000037405 00000 n
+0000037531 00000 n
+0000037612 00000 n
+0000037685 00000 n
+0000037758 00000 n
+0000037924 00000 n
+0000038005 00000 n
+0000038078 00000 n
+0000038151 00000 n
+0000038277 00000 n
+0000038379 00000 n
+0000038452 00000 n
+0000038525 00000 n
+0000038598 00000 n
+0000038712 00000 n
+0000038826 00000 n
+0000038932 00000 n
+0000038997 00000 n
+0000039055 00000 n
+0000039165 00000 n
+0000039230 00000 n
+0000039336 00000 n
+0000039401 00000 n
+0000039511 00000 n
+0000039576 00000 n
+0000039686 00000 n
+0000039751 00000 n
+0000039861 00000 n
+0000039926 00000 n
+0000040036 00000 n
+0000040101 00000 n
+0000040211 00000 n
+0000040276 00000 n
+0000040382 00000 n
+0000040447 00000 n
+0000040557 00000 n
+0000040622 00000 n
+0000040680 00000 n
+0000040790 00000 n
+0000040855 00000 n
+0000040961 00000 n
+0000041026 00000 n
+0000041136 00000 n
+0000041201 00000 n
+0000041259 00000 n
+0000041369 00000 n
+0000041434 00000 n
+0000041540 00000 n
+0000041605 00000 n
+0000041715 00000 n
+0000041780 00000 n
+0000041902 00000 n
+0000041967 00000 n
+0000042077 00000 n
+0000042142 00000 n
+0000042248 00000 n
+0000042313 00000 n
0000042423 00000 n
-0000042475 00000 n
-0000042526 00000 n
-0000042578 00000 n
-0000042630 00000 n
-0000042681 00000 n
-0000042731 00000 n
-0000042782 00000 n
-0000042832 00000 n
-0000043035 00000 n
-0000043192 00000 n
-0000043735 00000 n
-0000043949 00000 n
-0000044108 00000 n
-0000044563 00000 n
-0000044782 00000 n
-0000044942 00000 n
-0000045685 00000 n
-0000045904 00000 n
-0000046044 00000 n
-0000046260 00000 n
-0000046499 00000 n
+0000042488 00000 n
+0000042594 00000 n
+0000042659 00000 n
+0000042769 00000 n
+0000042834 00000 n
+0000042948 00000 n
+0000043013 00000 n
+0000043123 00000 n
+0000043188 00000 n
+0000043302 00000 n
+0000043367 00000 n
+0000043648 00000 n
+0000043778 00000 n
+0000043851 00000 n
+0000043928 00000 n
+0000044022 00000 n
+0000044382 00000 n
+0000044629 00000 n
+0000044666 00000 n
+0000044717 00000 n
+0000044768 00000 n
+0000044819 00000 n
+0000044871 00000 n
+0000044924 00000 n
+0000044975 00000 n
+0000045027 00000 n
+0000045079 00000 n
+0000045130 00000 n
+0000045181 00000 n
+0000045232 00000 n
+0000045283 00000 n
+0000045334 00000 n
+0000045385 00000 n
+0000045435 00000 n
+0000045486 00000 n
+0000045536 00000 n
+0000045739 00000 n
+0000045896 00000 n
+0000046439 00000 n
0000046653 00000 n
-0000046861 00000 n
-0000047072 00000 n
-0000047217 00000 n
-0000047437 00000 n
-0000047691 00000 n
-0000047819 00000 n
-0000047901 00000 n
-0000048504 00000 n
-0000052996 00000 n
-0000053077 00000 n
-0000053628 00000 n
-0000057373 00000 n
-0000057455 00000 n
-0000058166 00000 n
-0000065019 00000 n
-0000065101 00000 n
-0000065887 00000 n
-0000078973 00000 n
-0000079050 00000 n
-0000079490 00000 n
-0000080132 00000 n
-0000080209 00000 n
-0000080667 00000 n
-0000084870 00000 n
-0000105798 00000 n
-0000106205 00000 n
-0000106318 00000 n
-0000107391 00000 n
+0000046812 00000 n
+0000047267 00000 n
+0000047486 00000 n
+0000047646 00000 n
+0000048409 00000 n
+0000048628 00000 n
+0000048768 00000 n
+0000048984 00000 n
+0000049225 00000 n
+0000049379 00000 n
+0000049587 00000 n
+0000049798 00000 n
+0000049943 00000 n
+0000050164 00000 n
+0000050417 00000 n
+0000050568 00000 n
+0000050650 00000 n
+0000051253 00000 n
+0000055745 00000 n
+0000055826 00000 n
+0000056377 00000 n
+0000060122 00000 n
+0000060202 00000 n
+0000060923 00000 n
+0000067848 00000 n
+0000067930 00000 n
+0000068732 00000 n
+0000081929 00000 n
+0000082006 00000 n
+0000082446 00000 n
+0000083088 00000 n
+0000083167 00000 n
+0000083662 00000 n
+0000088640 00000 n
+0000110813 00000 n
+0000111220 00000 n
+0000111333 00000 n
+0000112406 00000 n
trailer -<</Size 411/Root 410 0 R/Info 408 0 R/ID[(DzyaajGJifpizox+vCC3sA==)(DzyaajGJifpizox+vCC3sA==)]>> +<</Size 441/Root 440 0 R/Info 438 0 R/ID[(laVFgD5BdtJEs88i4s7R4w==)(laVFgD5BdtJEs88i4s7R4w==)]>> startxref -107578 +112593 %%EOF
\ No newline at end of file diff --git a/docs/typ/cheatsheet.typ b/docs/typ/cheatsheet.typ index c4be1641..61ca4f03 100644 --- a/docs/typ/cheatsheet.typ +++ b/docs/typ/cheatsheet.typ @@ -2,7 +2,7 @@ // cheatsheet-a4.typ lays it out; style.typ says how each element looks. // config.zig's "docs/typ" test checks every #word, #key and #tag here // against the registry, the keymap and the default tags. -#import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs +#import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs, fstree == The mouse #pairs( @@ -41,12 +41,12 @@ Typed anywhere, then #btn("B3") or #key("Enter"): addr(":40"), [the pane looked from, line 40 (`:40:5`, any address after `:`)], addr("~/x"), [home; also in #word("Save"), #word("Restore"), `pardes ~/x`], addr("@p3:12"), [pane 3 by serial, a terminal's lines too], - addr("src/"), [a directory: `ls` in an idle terminal there, else a new one], + addr("src/"), [a directory: a pane listing it; `Get` reads it again], ) Addresses are sam's: `#n`, `/re/`, `?re?`, `$`, `a,b`. #doc("fs", section: "look-and-exec") == Keys: normal mode -Helix-style: motions *select*, then an edit acts on the selection. Mode box: blank normal, `^` insert, `$` raw terminal. +Helix-style: motions *select*, then an edit acts on the selection. Mode box: blank normal, `^` insert, `$` raw terminal. Every helix key: #link("https://docs.helix-editor.com/keymap.html")[its keymap]. #pairs( [#keys("h", "j", "k", "l") #keys("w", "b", "e")], [move; words select], [#keys("g g", "g e")], [first line, last line], @@ -74,14 +74,14 @@ Helix-style: motions *select*, then an edit acts on the selection. Mode box: bla [#key("Ctrl-w") #keys("h", "j", "k", "l")], [then a direction: focus a neighbour (not in insert or raw `$`)], [#key("Esc")], [back to the previous pane (raw: only at a prompt with nothing typed; insert: to normal)], [#key("Shift-Esc")], [back to the previous pane from any mode, with the kitty keyboard protocol or in the GUI; elsewhere a plain Esc], - [#keys("Ctrl-o", "Ctrl-i")], [jump history back, forward], + [#keys("Ctrl-o", "Ctrl-i")], [jump history back, forward; this file first. #key("Ctrl-i") is #key("Tab") without the kitty protocol: #key("SPC j i")], [#key("Alt-n")], [new terminal below], [#key("Alt-c")], [move the pane to a new column], ) == The leader: #key("SPC") in normal mode #pairs(split: 2, - key("SPC ?"), [every path], + key("SPC ?"), [#word("Help"): every builtin], key("SPC f s"), word("Save"), key("SPC f n"), word("New"), key("SPC f f"), word("Find"), @@ -134,15 +134,21 @@ Helix-style: motions *select*, then an edit acts on the selection. Mode box: bla Pane shells get `$PARDES_9P` (the socket) and `$PARDES_PANE` (their own pane); a command clicked in a pane also gets `$winid`, the pane it was clicked in. #cmd("9ns --mntgen # then m=$PARDES_MOUNT in every pane") #cmd("9p -a \"unix!$PARDES_9P\" read index") -#pairs( - file("index"), [a line per pane: serial, kind, name], - file("look exec"), [write a line: a #btn("B3") or #btn("B2")], - file("log"), [events; write `follow` to wait], - file("pane/new"), [open to make a pane], - file("pane/N/addr"), [an address; `data` reads/replaces it], - file("pane/N/ctl"), [builtins: #word("Save"), #word("Edit") `...`], - file("pane/N/body tag"), [its text (`>>` appends)], -) +#fstree(``` +index a line per pane @rules +look write: a #word("Look") @look-and-exec +exec write: an #word("Exec") @look-and-exec +log events; follow waits @log +pane/ + new open: a new pane @panes + <n>/ + addr where data reads, writes @addresses + ctl builtins: #word("Save"), #word("Edit") … @panes + body its text (>> appends) @panes + data the text at addr @addresses + look a #word("Look") here @look-and-exec + exec an #word("Exec") here @look-and-exec +```) #cmd("echo notes.txt:12 > $m/pane/$n/look") #cmd("echo /foo/ > $m/pane/$n/addr; printf bar > $m/pane/$n/data") #cmd("echo 'Edit ,x/foo/c/bar/' > $m/pane/$n/ctl") diff --git a/docs/typ/guide.typ b/docs/typ/guide.typ index d07ab6cd..578e7ea8 100644 --- a/docs/typ/guide.typ +++ b/docs/typ/guide.typ @@ -1,19 +1,21 @@ // The guide: pardes day to day, the path a newcomer reads once. Edge cases // live in the reference, the pager and the language servers in setup, the // keys on the cheatsheet. -#import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs, glossary +#import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs, glossary, annotated, clip, mode-box -pardes reads the text on its screen as things to do, with two builtins. -#word("Look") (right-click): open the `file:line`, address or URL the text -names, or else find the text. #word("Exec") (middle-click): run the builtin -the text names, or else run it as a shell line. Everything else is where -that happens: columns of panes, each a tag (a line of words) over a body -that is a file you edit, a terminal, a PDF or an image, with a tag for each -column and the workspace above. The keys are helix's, in modes, and every -session is also a virtual filesystem, served over 9P, for scripts. +#word("Look") (right-click) opens `src/bar.c:12`; #word("Exec") (middle-click) runs `make`. + +#annotated("/docs/site/media/themes/orchard.png", (640, 513), + alt: "a pardes window: workspace tag, column tag, a file pane, a terminal and a diff", + ([the workspace tag: words for the whole session], -22, 11), + ([a column's tag], 400, 34), + ([a pane's tag: its path, then its words], 560, 58), + ([the box: the pane's mode, and the handle to drag it], 8, 58), + ([the body: here a file, below it a terminal], 200, 104), + ([the scrollbar: how much of the body is in view], 8, 160), +) #glossary("Words you'll see", <words>, - [tag], [the line of words over a pane, a column or the screen; every word in it can be clicked], [the pane with the keyboard], [where your keys go; one pane at a time], [the session's directory], [where pardes started, or the directory `pardes DIR` named; workspace and column tags run there], [active column], [where the next new pane goes (below)], @@ -21,40 +23,43 @@ session is also a virtual filesystem, served over 9P, for scripts. [`+` names], [panes pardes makes, named in their directory: `+New` a scratch (text with no file yet), `+Search` a listing of places, `+Pager` paged text, `+Errors` output, `+Unsaved` the panes holding unsaved text], [serial], [a pane's number, never reused: the `3` in `@p3:12` and in 9P paths], [message row], [the line where pardes says what happened, and asks: answer a prompt (a search, #word("Save")'s path) with #key("Enter"), cancel it with #key("Esc")], - [the box], [left of a pane's tag: drag it to move or resize the pane; it shows the mode, and marks unsaved text (`*`, or filled in the window)], ) = Modes <modes> -Each pane has its own mode and keeps it while you are elsewhere. The box -at the left of a pane's tag shows it. +Each pane keeps its own mode. The box left of its tag shows it. #pairs( - [normal (blank)], [keys move and select; an edit acts on the selection. File and PDF panes start here, and so does a terminal from #key("Alt-n").], - [insert (`^`)], [keys type. #keys("i", "a", "o") and the rest enter it.], - [raw (`$`), terminals only], [keys go to the program. A terminal from #word("Tty"), the shell a bare `pardes` starts with, and a command pane start here.], + [#mode-box(" ") normal], [keys move and select; an edit acts on the selection. File and PDF panes start here, and so does a terminal from #key("Alt-n").], + [#mode-box("^") insert], [keys type. #keys("i", "a", "o") and the rest enter it.], + [#mode-box("$") raw, terminals only], [keys go to the program. A terminal from #word("Tty"), the shell a bare `pardes` starts with, and a command pane start here.], ) -#key("Ctrl-b") switches a terminal between raw and normal; in normal mode -its prompts are hidden and its text is a page to move over and copy from. -#word("Mode") in the tag steps raw, normal, insert. +#key("Ctrl-b") switches a terminal between raw and normal. In normal, +its text is a page to move over and copy from. #word("Mode") in the tag +steps raw, normal, insert. #pairs( - [normal], [#key("Esc"): back to the previous pane (#word("Last")). #key("Shift-Esc"): the same.], - [insert], [#key("Esc"): back to normal. #key("Shift-Esc"): out of insert and back to the previous pane.], - [raw `$`], [#key("Esc"): to the program, except at a shell prompt with nothing typed on it, where it goes back to the previous pane. #key("Shift-Esc"): always back. Either way the terminal stays `$`.], + [#mode-box(" ") normal], [#key("Esc"): back to the previous pane (#word("Last")), unlike helix. #key("Shift-Esc"): the same.], + [#mode-box("^") insert], [#key("Esc"): back to normal. #key("Shift-Esc"): out of insert and back to the previous pane.], + [#mode-box("$") raw], [#key("Esc"): to the program, except at a shell prompt with nothing typed on it, where it goes back to the previous pane. #key("Shift-Esc"): always back. Either way the terminal stays raw.], [a PDF], [#key("Esc"): clears the selection and the search highlights. #key("Shift-Esc"): back to the previous pane.], ) -Unlike helix, #key("Esc") in normal mode leaves the pane: it is how you go -back. #key("Shift-Esc") needs the kitty keyboard protocol or the GUI; -elsewhere it is a plain Esc. "The previous pane" is the last other pane on -the jump list, else the next pane down its column. #key("Ctrl-w") then -#keys("h", "j", "k", "l") moves the keyboard to the pane left, below, -above or right; #keys("Ctrl-o", "Ctrl-i") walk back and forward through the -places you have jumped to, the jump list. In raw mode every key but #key("Ctrl-b"), Esc and the -paste chords goes to the program, so #key("Ctrl-w") and #key("Alt-n") need -you out of raw mode first. +In acme, Esc selects the text typed since the last click; here it leaves +insert mode, or goes back a pane. + +#key("Shift-Esc") needs the kitty keyboard protocol or the GUI. Elsewhere +it is a plain Esc. The previous pane is the last one you jumped from, else +the next pane down the column. + +#pairs( + [#key("Ctrl-w") #key("h")], [the keyboard to the pane on the left; #key("j") below, #key("k") above, #key("l") right], + [#keys("Ctrl-o", "Ctrl-i")], [back and forward through the places you jumped to (the jump list), this file's first: another file's only once it has none left that way (#word("JumpScope") `all`: every place in order). #key("Ctrl-i") needs the kitty keyboard protocol or the GUI, being #key("Tab") elsewhere: there use #key("SPC j i") and #key("SPC j o"), or the mouse's side buttons], +) + +Raw mode sends almost every key to the program. Leave it (#key("Ctrl-b")) +before #key("Ctrl-w") or #key("Alt-n"). = The mouse <mouse> @@ -62,21 +67,28 @@ you out of raw mode first. btn("B1"), [select; a click puts the cursor there and gives the pane the keyboard. In a tag it starts typing, in insert mode. A double click selects the word; at a line's start or end, the line; just inside a bracket or quote, up to its match.], btn("B2"), [#word("Exec"): a builtin word runs, anything else is a shell line.], btn("B3"), [#word("Look"): open the file, address, directory or URL, else find the word's next place.], + chord("B1", "B2"), [cut the selection], + chord("B1", "B3"), [paste over it], + chord("B1", "B2", "B3"), [copy], + [Alt-click (Option)], [#btn("B2"), sweeps too, for one button or a trackpad; in a terminal too], + [Super-click (Cmd)], [#btn("B3"); not in a terminal, which never passes Super], + [Ctrl-click], [the language server's definition], ) +#clip("chords") -With one button, as on a trackpad, Alt-click (Option on a Mac) is #btn("B2") and Super-click (Cmd) is #btn("B3"), sweeps included; Ctrl-click stays the language server's definition, a program that takes the mouse gets the plain click, and in a terminal only Alt-click works, since Super never reaches pardes there. +A program that takes the mouse gets the plain click. -A middle- or right-click with no drag takes the word under it: the -run of letters, digits and `. - + / : @ _ ~`, a trailing `:` dropped. So #btn("B3") on `src/bar.c:12:5:` in a compiler's error opens `src/bar.c` at -line 12, column 5. Drag to say exactly what you mean. #key("Enter") and -#key("Tab") in normal mode are #word("Look") and #word("Exec"). +line 12, column 5. A click takes the word under it: letters, digits and +`. - + / : @ _ ~`, less a trailing `:`. Drag to take exactly what you +swept. In normal mode #key("Enter") is #word("Look") and #key("Tab") is +#word("Exec"). + +A builtin's argument: sweep `Find conf` with #btn("B2"), or select `conf`, +then #chord("B2", "B1") on `Find`. -Hold the left button and click the middle one to cut the selection, the -right one to paste over it, both one after the other to copy. #key("y") yanks and -#key("p") pastes after (a line yanked with #key("x") #key("y") goes in as a -new line below), through registers every pane shares; #key("SPC y") and -#key("SPC p") use the system clipboard. +#key("x") #key("y") then #key("p") copies a line below. Every pane shares +the registers. #key("SPC y") and #key("SPC p") use the system clipboard. = Tags <tags> @@ -84,19 +96,23 @@ new line below), through registers every pane shares; #key("SPC y") and #tag("New Tty Find Grep Joincol Delcol") #tag("Save Tty Collapse Del", path: "/home/me/notes.txt") -A tag is text with undo: type a word into it and click it, or delete the -defaults. #key(":") moves the keyboard to the tag, onto its #word("Save") -the first time, in normal mode (#key("Tab") runs it), and back. Any word -runs from any tag: #word("Exit") in a pane's tag quits too. The path -at the start of a pane's tag is computed: typing into it drafts a new name, -#key("Enter") confirms and the next #word("Save") writes there. -#word("Collapse") folds a pane to its tag. Drag the grip up or down to -resize, or onto another column to move the pane. +A tag is text with undo. Type `make` into one and #word("Exec") it, or +delete the words you never use. Any word runs from any tag: #word("Exit") +in a pane's tag quits too. + +#pairs( + [#key(":")], [the keyboard to the tag, on #word("Save") the first time; #key("Tab") runs it, #key(":") comes back], + [edit the path, #key("Enter")], [renames: the next #word("Save") writes there; the typed path survives #key("Esc"), pending, and a second #key("Esc") drops it], + [#word("Collapse")], [folds the pane to its tag], + [drag the box], [up or down resizes; onto another column moves the pane], +) = Where commands run and panes go <command-panes> -#btn("B2") on a line that is no builtin (`make`, `git log`) runs it with -the #word("Shell") setting's `-c`. Where depends on where you clicked: +#btn("B2") on `make` runs it with the #word("Shell") setting's `-c`. +Where it runs depends on where you clicked: + +#clip("where-commands-run") #pairs( [a terminal's text or tag, at a prompt with nothing typed], [typed into that shell, in its current directory], @@ -105,58 +121,66 @@ the #word("Shell") setting's `-c`. Where depends on where you clicked: [the workspace tag], [a command pane in the session's directory, in the last column], ) -The keyboard stays where it was. A file's tag runs in the file's directory, -so run project commands (`make`) from a column or the workspace tag, or a -shell. A command pane's tag says `running`, then `exit N`: +A file's text and tag run in its directory: `make` from `README` at the +project root is right, from `src/main.c` it is not. The keyboard stays +where it was. The command pane's tag ends in `running`, then `exit N`: #tag("Kill Save Collapse Del", path: "/home/me/src (make) exit 0") -The next command for that directory reuses a finished command pane. -#word("Kill") stops what pardes started (#word("Kill") `make`: those whose line -starts with `make`); #word("Exit") quits pardes. A pane word from a column -tag (#word("Save"), #word("Del")) acts on that column's pane with the -keyboard, or its first. +Click into the command pane: #key("n") selects the next `file:line`, +#key("Enter") opens it, and #key("n") from there goes on to the next error. +A finished command pane is in normal mode, so #key("x") #key("y") copy from +it at once. The next command for that directory reuses it. +#word("Kill") `make` stops the commands pardes started with `make`. +#word("Save") or #word("Del") in a column tag acts on that column's pane +with the keyboard, else its first. -Every other new pane goes into the *active column*: the column you last -typed or left-clicked in, or the one that got the last new pane. It -takes the keyboard, except a listing, which opens below the pane that -asked and leaves it the keyboard, so #keys("n", "N") walk the listing. -#word("Look") moves the keyboard but not the active column: #btn("B3") on a file -already open in another column jumps there, and the next new pane still -lands in the old column until you type or click. #word("Placement") -`pardes` picks other rules (#doc("reference", section: "placement")). +Every other new pane goes into the *active column*: where you last typed +or left-clicked, or where the last new pane went. The new pane takes the +keyboard. A listing is the exception: it opens below the pane that asked, +which keeps the keyboard, so #keys("n", "N") walk the listing. #btn("B3") +on a file open in another column jumps there, but the next new pane still +lands in the old column. #word("Placement") `pardes` picks other rules +(#doc("reference", section: "placement")). -A column can be empty: closing its last pane leaves it. #word("Delcol") -and #word("Joincol") take columns away. Closing the session's last pane -quits pardes. +To open beside: #word("Newcol"), then #word("Look") a file name typed in +its tag opens it there; #key("Alt-c") moves a pane into a new column. +#clip("columns", wide: true) + +Closing a column's last pane leaves it empty; #word("Delcol") and +#word("Joincol") take columns away. Closing the session's last pane quits +pardes. = Look <looking> -#btn("B3") (or #key("Enter")) on a path opens it, or goes to the pane that -already shows it; `file:12` goes to line 12, `file:/re/` to the next -match of `re`, and the other address forms are on the cheatsheet. -#key("/"), text and #key("Enter") list the lines holding it in a `+Search` -and go to the first; #keys("n", "N") step through the rest. A directory types `ls` into a terminal idle there, -else opens one there. A URL opens in the browser. A relative path is -found in the directory of the pane the #word("Look") came from, then of each -pane on the jump list, most recent first. +#pairs( + addr("notes.txt"), [opens it, or goes to the pane already showing it], + addr("notes.txt:12"), [line 12], + addr("notes.txt:/TODO/"), [the next match of `TODO`], + addr("src/"), [a pane listing it, as acme's directory window: a #word("Look") at an entry opens it, `..` goes up, `Get` reads it again (#word("DirLook") `terminal`: `ls` in a terminal there)], + addr("https://ziglang.org"), [the browser, through `xdg-open` (`open` on macOS); there is no plumber], +) + +#key("Enter") does the same from the keyboard; the other address forms are +on the cheatsheet. A relative path is found in the directory of the pane +the #word("Look") came from, then of each pane on the jump list, most +recent first. -#word("Find") `name` lists the files below the pane's directory whose -names hold it; #word("Grep") `text` lists the lines that hold the text, -literally (no regular expression), under every pane's directory. Both land -in a `+Search` listing; their limits are in the reference. +#pairs( + [#key("/") `TODO` #key("Enter")], [a `+Search` of the lines holding `TODO`; #key("n") moves the keyboard into it and walks its rows (#key("N") back), and #key("Enter") on a row takes the searched pane there], + [#word("Find") `conf`], [a `+Search` of the files below the pane's directory with `conf` in their names], + [#word("Grep") `TODO`], [a `+Search` of the lines holding `TODO`, literally, under every pane's directory], +) +#clip("search") = Unsaved panes <unsaved-panes> -A pane with unsaved text is marked on its grip. #word("Del") on it refuses -once: the message row says `1 unsaved pane — Del again to discard` and the -pane is listed in `+Unsaved`. The same #word("Del") again discards it. -#word("Exit"), #word("Restore") and #word("Delcol") refuse once the same -way. A pane with nothing unsaved closes at once. From the keyboard -(#key("SPC d")), #word("Del") between two panes also asks which takes its -rows: #key("k") above, #key("j") below. To quit, press #key("SPC q") or -middle-click #word("Exit") in the workspace tag; it refuses once -over unsaved panes too. +#word("Del") on a pane with unsaved text, its box filled +(#mode-box(" ", unsaved: true); a `*` in a terminal), refuses once, saying `1 unsaved pane — Del again to discard`, and lists the pane +in `+Unsaved`; #word("Del") again discards it. +#word("Exit") (or #key("SPC q")), #word("Restore") and #word("Delcol") +refuse once the same way. #key("SPC d") between two panes also asks which +takes the rows: #key("k") above, #key("j") below. = Terminals <terminals> @@ -170,40 +194,57 @@ over unsaved panes too. - #word("Filter") maps the program's colours through the theme. - #word("Petscii") draws a program's images as glyph art instead of pixels. - In raw mode Ctrl-V types what you yanked, Ctrl-Shift-V the clipboard. +- In normal mode, editing a terminal's text edits a copy, and the first + edit says so: #key("Tab") or #btn("B2") runs it, and the program's next + drawing replaces it. - A program that tracks the mouse gets #btn("B1") and the wheel; #btn("B2") and #btn("B3") stay pardes's. Hold Shift to swap. - #word("Repl") `python` in its tag makes #btn("B2") on a `.py` pane send the text to that REPL. -- Paged output (`git log`, `man`) opens in a `+Pager` pane (#doc("setup", section: "pager")). +- `git log` and `man` open in a `+Pager` pane (#doc("setup", section: "pager")). = Reviewing diffs <reviewing-diffs> -Open a `.diff` or `.patch`, or run `git diff` as a command: the output is -drawn as a diff, each hunk coloured in its file's language. #btn("B3") on a -`diff --git`, `---` or `+++` line opens the file; on `@@` the hunk's first -new line; on a hunk line's `+`, `-` or space, that line in the new file. +`git diff` run as a command, or a `.diff` or `.patch` opened, is drawn as +a diff, each hunk in its file's language. #btn("B3") on: + +#pairs( + [`diff --git`, `---`, `+++`], [the file], + [`@@ -3,7 +3,8 @@`], [the hunk's first new line], + [a line's `+`, `-` or space], [that line in the new file], +) = `pardes FILE` and `--wait` <editor> -In a pane's shell, `pardes FILE` opens FILE in this session and returns at -once, as acme's `B` does; a FILE not there yet opens an empty pane that -#word("Save") creates. `pardes --wait FILE` returns when that pane is -closed, as acme's `E` does, which makes it an `EDITOR` -(#doc("setup", section: "editor-setup")). Refusals and `--nested` are in -the reference. +In a pane's shell: + +``` +pardes notes.txt open it here and return at once (acme's B) +pardes --wait notes.txt return when that pane closes (acme's E) +``` + +A file not there yet opens empty, and #word("Save") creates it. +`--wait` makes pardes an `EDITOR` (#doc("setup", section: "editor-setup")); +refusals and `--nested` are in the reference. = Keys <keys> -Motions select what they cross, and an edit acts on the selection: #key("w") -then #key("d") deletes a word. #key("x") selects lines, #key("v") extends, -#key(";") collapses to the cursor. #key("s") makes a cursor per regex match -and every edit acts at each. #key("/") is a substring search; the regexes -are on #key("s") and #key("S"). #keys("n", "N") step through everything -#word("Look") would open, across panes. Line end is #key("g l"). #key("SPC") starts -the leader, #key("SPC ?") lists every path, #word("Help") every key and -builtin, and #word("Tutor") (#key("SPC h t")) practises them. The language -keys (#keys("g d", "g r"), `SPC l`) work once a server is installed -(#doc("setup", section: "language-servers")). +#pairs( + [#key("w") #key("d")], [select a word, delete it: motions select, edits act on the selection], + [#key("x"), #key("v"), #key(";")], [select the line; extend; collapse to the cursor], + [#key("s")], [a cursor per regex match; every edit acts at each], + [#key("/"), #keys("n", "N")], [substring search; step through everything #word("Look") would open, across panes], + [#key("g l")], [line end], + [`12G`], [line 12; a bare #key("G") does nothing], + [#key("SPC ?")], [#word("Help"): every builtin, with its leader path and keys; `SPC w ?` only the paths under `SPC w`; #word("Tutor") (#key("SPC h t")) practises them], + [#keys("g d", "g r"), `SPC l`], [the language keys, once a server is installed (#doc("setup", section: "language-servers"))], +) + +The keys are helix's, and helix's +#link("https://docs.helix-editor.com/keymap.html")[keymap] is their full +reference. Where pardes differs (#key("Esc") leaving the pane, the +#key("SPC") paths, #key("Ctrl-w"), #key("Ctrl-b")), this guide and the +cheatsheet (#doc("cheatsheet")) say so. = Sessions <sessions> @@ -212,10 +253,10 @@ pardes --detach=work & a session with no screen of its own pardes --attach=work show it here ``` -The session owns the panes, shells and files; frontends come and go. -#word("Attach") `work` (#key("SPC s a")) switches this window to it, and -#word("Detach") (#key("SPC s D")) leaves it running. Every attached frontend -sees the same screen. +The session owns the panes, shells and files; frontends come and go, and +all of them see the same screen. #word("Attach") `work` (#key("SPC s a")) +switches this window to it; #word("Detach") (#key("SPC s D")) leaves it +running. = Config <config> @@ -229,6 +270,22 @@ Shell zsh ``` #word("DumpConfig") opens every live setting as the line that sets it. -#word("Dump") saves the workspace and #word("Restore") brings it back; what -a dump keeps is in the reference. Keys are compile-time, in +#word("Dump") saves the workspace and #word("Restore") brings it back +(what a dump keeps is in the reference). Keys are compile-time, in `src/config.zig`. + += Questions <questions> + +/ Why not helix and tmux, or acme?: helix and tmux edit and run shells + well, but their text is inert. acme makes text the interface and is + modeless by design, with win for shells and page and the plumber for + documents. pardes keeps acme's text as the interface and trades the rest + for helix's modal keys, a VT terminal and PDFs in a pane. What changes + for acme users and scripts is in #doc("reference", section: "from-acme"). +/ Does it run inside tmux?: Yes, as in any terminal. Where tmux does not + pass kitty's protocols, #key("Shift-Esc") is a plain Esc and images draw + as glyph art. +/ Does my helix config carry over?: No. The keys are compiled in + (`src/config.zig`); `~/.config/helix` is not read. +/ How do I quit?: #key("SPC q"), or #word("Exit") in any tag. +/ What does "pardes" mean?: The name of the four levels of reading a text in rabbinical exegesis (#link("https://en.wikipedia.org/wiki/Pardes_(exegesis)")[Wikipedia]). diff --git a/docs/typ/install.typ b/docs/typ/install.typ index 6d853f3f..9758777d 100644 --- a/docs/typ/install.typ +++ b/docs/typ/install.typ @@ -1,13 +1,25 @@ -// Installing pardes: the clone and the build, included by setup.typ and by -// the site's landing page, so it is written once. The mirrors come from -// `project` in style.typ. +// Installing pardes: the downloads, else the clone and the build, included +// by setup.typ and by the site's landing page, so it is written once. The +// downloads and the mirrors come from `project` in style.typ. #import "style.typ": cmd, project +#if project.download != none { + let d = project.download + for f in d.files { + let name = f.url.split("/").last() + [pardes #d.version, #f.what (#str(calc.round(f.bytes / 1000000)) MB):] + cmd("curl -LO " + f.url + "\necho '" + f.sha256 + " " + name + "' | sha256sum -c\nchmod +x " + name + " && mv " + name + " ~/.local/bin/" + f.program) + } + [The checksums are also in #link(d.sums)[`SHA256SUMS`].] + parbreak() + [Or build it from source:] +} + #let first = project.mirrors.first() #cmd("git clone " + first.clone + " && cd pardes") -Every mirror holds the same tree: #project.mirrors.map(m => link(m.web, m.name)).join(", "). -With Zig 0.16 (the build fetches everything else): +With Zig 0.16 (the build fetches everything else; once that is +downloaded, a first build from a clean cache took 62 seconds on 16 cores): #cmd("# pardes, in a terminal\nzig build -Dplatform=tty --prefix ~/.local") #cmd("# pardes-gui, its own window\nzig build -Dplatform=gui --prefix ~/.local") Then run `pardes` or `pardes FILE`. diff --git a/docs/typ/reference.typ b/docs/typ/reference.typ index e79f9c4d..148ef30e 100644 --- a/docs/typ/reference.typ +++ b/docs/typ/reference.typ @@ -2,43 +2,71 @@ // does, how it fails, and the limits. How pardes behaves on screen is the // guide's; recipes and traps are scripting's; how a mount cuts writes and // the listeners are building's. -#import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs +#import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs, fstree Every native session is a virtual filesystem, served as 9P2000 (not .u, -not .L), in acme's manner: panes, columns, tags and the session are -files. Paths here are the served ones (#file("/pane/2/body")); through a +not .L) and modelled on acme's (#doc("reference", section: "from-acme")): +panes, columns, tags and the session are files. Paths here are the served ones (#file("/pane/2/body")); through a mount they sit under the session's directory (`$m`; #doc("scripting", section: "find-the-session") says how to find it). The served #file("/README") is a -one-screen summary of this page. Two builtins carry the core: #word("Look") (right-click): open what the +one-screen summary of this page. Two builtins: #word("Look") (right-click): open what the text names, or else find it; #word("Exec") (middle-click): run the builtin it names, or else run it as a shell line. The files #file("look") and #file("exec") take a line each, as those clicks would. = The tree <tree> -``` -/README the one-screen summary (src/fs-help.txt) -/index a line per pane: serial kind dirty name column -/status pid, version, panes -/look /exec write a line: a right / middle click at the pane with the keyboard; read: the serials touched -/pager write a directory: its one +Pager, made or emptied; read: its serial -/log the event log; write `follow` to wait for more -/screen the rendered screen as JSON -/listeners dial addresses -/focus the serial of the pane with the keyboard; write one to move it -/ctl settings and session builtins -/commands every builtin, one a line -/recent files opened lately: open|closed <path> -/layout a line per column, then `active <serial>` -/tag /tagexec the workspace tag, and a word clicked in it -/col/<n>/ tag ctl exec of column <n>; rmdir closes an empty one -/pane/new open it to make a pane; read answers the serial -/pane/<n>/ name body tag ctl addr dot limit data xdata sel dirty mark scroll - errors event look exec tagexec, and pty/{ctl,status,data,run} on terminals; - rmdir closes the pane -/os/ the host filesystem -/src/ the editor's sources (only with -Dembed-sources=true) -``` +#fstree(``` +README the one-screen summary (src/fs-help.txt) @other-files +index a line per pane: serial kind dirty name column @rules +status pid, version, panes @other-files +look write a line: a #word("Look") at the pane with the keyboard; read: the serials touched @look-and-exec +exec write a line: an #word("Exec") there; read: the serials touched @look-and-exec +pager write a directory: its one +Pager, made or emptied; read: its serial @pardes-stdin +log the event log; write follow to wait for more @log +screen the rendered screen as JSON @on-screen +listeners dial addresses @other-files +focus the serial of the pane with the keyboard; write one to move it @columns-and-tags +ctl settings and session builtins @root-ctl +commands every builtin, one a line @other-files +recent files opened lately: open|closed <path> @other-files +layout a line per column, then active <serial> @columns-and-tags +tag the workspace tag @columns-and-tags +tagexec a word clicked in the workspace tag @columns-and-tags +col/ the columns @columns-and-tags + <n>/ column <n>; rmdir closes it when empty @columns-and-tags + tag its tag + ctl its builtins (Delcol Joincol New Tty) + exec a word clicked in its tag +pane/ the panes @panes + new open it to make a pane; read answers the serial @panes + <n>/ pane <n>; rmdir closes it @panes + name the file name; write to rename @panes + body the text; a write appends, > replaces @panes + tag its path, then its words; a write replaces the words @panes + ctl builtins and ctl words, a line each @panes + addr the address data and xdata work on @addresses + dot the selection, as an address @addresses + limit where a forward search stops @addresses + data the text at addr; a write replaces it @addresses + xdata the text in addr's range only @addresses + sel the selected text; a write replaces it @panes + dirty 1 while the text differs from its file @flags + mark 0 or 1; a write marks an undo point @flags + scroll 0 or 1; a write scrolls the pane @flags + errors write-only: text for the directory's +Errors @panes + event the pane's clicks and keys, as acme's event file @event + look a #word("Look") at this pane @look-and-exec + exec an #word("Exec") at this pane @look-and-exec + tagexec a word clicked in this pane's tag @look-and-exec + pty/ terminals only @pty + ctl winsize, sig, exec @pty + status cols rows busy @pty + data the live stream: bytes in as typed, output out @pty + run write a command line; read: exit N, then its output @pty +os/ the host filesystem @mounts +src/ the editor's sources (only with -Dembed-sources=true) @mounts +```) Panes and columns are named by serials the editor gives: stable while they live, never reused (so they can have gaps). Nothing is created by a listing, stat, walk or read: @@ -70,8 +98,8 @@ own), never a C library string; a bad setting value is quoted, the value itself (`bad value in control message; takes on, off "maybe"`); a ctl refusal quotes the offending word alone (`wrong #args in control message "Newcol"`). Through 9ns the kernel sees an errno 9ns reads from those words (cloud9's `fs.enameErrno`): the first of these that the -words hold, case aside, wins, and anything else is EIO (`Modified`, an -#word("Edit") command pardes leaves out): +words hold, case aside, wins, and anything else is EIO (`Modified`, a +sam command pardes's #word("Edit") leaves out, `B <cmd`): #pairs( [`control message`], [EINVAL], @@ -95,6 +123,8 @@ words hold, case aside, wins, and anything else is EIO (`Modified`, an [acme's address and argument words: `no match for regexp`, `no previous regular expression`, `address out of range`, `addresses out of order`, `past end of body`, `written to addr failed`, `not locked by this open`, `too small for the panes`, `owns the size`, `no question asked`, `answer takes`], [EINVAL], ) +A file pardes reads (#word("Get"), #word("Look"), #word("Edit")'s `e` and `r`) that is a directory where a file is wanted says `is a directory` (EISDIR), an unreadable one `permission denied` (EACCES), and a device (`/dev/zero`, a tty) `not a regular file` (EIO), never read to the stream limit; #word("Incl") of a file says `not a directory` (ENOTDIR). + The `err` record has the words; a shell sees only the errno. Not failures: a #word("Look") that finds nothing (it answers nothing and logs one @@ -188,7 +218,7 @@ files. that is there but will not open fails the write and is named: `look: <path>: permission denied`. A zero column is refused, `file:0:0` included: columns count from 1. -- A whole line of a diff pane written to #file("look") is the look a right-click on its first column makes. The line is matched in the +- A whole line of a diff pane written to #file("look") is the #word("Look") on its first column. The line is matched in the pane from its cursor row on, wrapping, and the first match wins. - On a PDF pane `:P:H` is hit H of the pane's search on page P, as `file.pdf:P:H` is; a hit not there, or any H with no search active, is a @@ -238,10 +268,12 @@ A line written to #file("exec") is #word("Exec"): #word("Lspwhy") narrates the last query step by step (in `+Lsp`). The write returns once the answer is in; a pane with no file is refused. - acme's words run as pardes's where it has one (`Put` is #word("Save"), - `Delete` a #word("Del") that does not ask); the rest (`Get`, `Putall`, - `Snarf`, `Cut`, `Paste`, `Zerox`, `Sort`, `Load`, `ID`, `Send`, `Tab`, - `Indent`, `Local`, `Incl`, `Abort`) are refused, `invalid: acme's Get is not a pardes builtin: ...`, never run as commands. So is a GUI-only - builtin (`Fonts`) on another frontend. + `Load` is #word("Restore"), `Delete` a #word("Del") that does not ask); + `Get`, `Putall`, `Zerox`, `Tab` and `Incl` are builtins of their own; the + rest (`Snarf`, `Cut`, `Paste`, `Sort`, `ID`, `Send`, `Indent`, `Local`, + `Abort`) are refused, `invalid: acme's Snarf is not a pardes builtin: ...`, + never run as commands. So is a GUI-only builtin (#word("Fonts")) on + another frontend. - Anything else is a command line (a typo ends `exit 127`), at most 1024 bytes, run as the guide says (#doc("tags", section: "command-panes")): typed into a terminal idle at an empty prompt, else run in a command pane. #file("exec") reads back @@ -307,7 +339,7 @@ Writes take settings and session builtins (`scope = .session` in `src/builtins.zig`), acting at the pane with the keyboard: - A setting written bare steps to its next value (a switch flips; so do - #word("Placement"), #word("BootShell"), `Crt`). A value it does not + #word("Placement"), #word("BootShell"), #word("Crt")). A value it does not take is `bad value in control message; ...` naming what it takes; #file("/commands") lists them. A setting the frontend cannot show is refused (`Lift is GUI-only, invalid here`). @@ -356,9 +388,9 @@ runs fails with the editor's words (`Mount: already mounted`, `Save /root/x: acc == Settings <settings> A setting that chooses among words (`on`/`off` switches, -#word("Placement"), #word("BootShell"), `Crt`, `Bloom`, -`Vignette`, `Grain`, `Lift`, #word("Motion"), -`ShaderAnimation`) steps to its next value when given bare, as its +#word("Placement"), #word("BootShell"), #word("Crt"), #word("Bloom"), +#word("Vignette"), #word("Grain"), #word("Lift"), #word("Motion"), +#word("ShaderAnimation")) steps to its next value when given bare, as its word clicked in a tag does. The same lines go in the startup file (#doc("config")). @@ -375,6 +407,8 @@ word clicked in a tag does. The same lines go in the startup file [#word("Placement") `acme|pardes`], [`acme`: where new panes go (#doc("fs", section: "placement"))], [#word("BootShell") `keep|replace`], [`keep`; `replace` closes the untouched lone shell a dragged document lands beside], [#word("LookWord") `search|list`], [`search`: a word given to #word("Look") selects its next place, or lists all in `+Search`], + [#word("DirLook") `pane|terminal`], [`pane`: #word("Look") on a directory opens a pane listing it, as acme's directory window (#doc("reference", section: "from-acme")); `terminal` types `ls` into a terminal idle there, else opens one], + [#word("JumpScope") `file|all`], [`file`: #word("Back") and #word("Forward") keep to the focused pane's file, that pane's places first, then the file's in another pane, and go to another file only when the file has no place left that way; from a terminal or a pane with no file they step through every place; `all`: every place, in the order it was jumped to], [#word("TermImages") `real|petscii`], [`real`: a new terminal draws its program's kitty graphics (yazi's previews) as pixels where the shell can; #word("Petscii") flips one terminal; a tty under a terminal without kitty graphics draws them as glyph art either way], [#word("Shell") `<name or path>`], [`$SHELL` when it is executable, else `/bin/sh`: the shell the next terminal and command pane run; a bare name is searched for in the usual bin directories, not `$PATH`; bare #word("Shell"): `$SHELL` if it is executable, else `/bin/sh`], [#word("DumpDir") `<dir>`], [`$XDG_DATA_HOME/pardes`, else `~/.local/share/pardes`: where #word("Dump") writes, an absolute or `~` path to a directory that may be written (made if missing); a relative one, or one under a directory that may not be written, is refused; bare returns to the default], @@ -382,16 +416,16 @@ word clicked in a tag does. The same lines go in the startup file [#word("TreeContextTagStyle")], [on: draw those headers in the tagline style], [#word("LocationsConfig") `...`], [the layout of #word("Grep"), search and language-server results (below)], [#word("Wrap"), #word("Colors"), #word("Tagbottom"), #word("Debug")], [toggles], - [`Font <name>[:<size>]`, `Fonts`], [SDL and macOS only; size 8-72 (pixels in SDL, points on macOS)], - [`TaglineSize <1-100>`], [82: tagline face, percent; SDL and macOS], - [`WindowOpacity <0-100>`], [100; SDL only: everything but text and the cursor], - [`Ligatures`], [on; SDL only, macOS draws CoreText's own], - [`Pet cat|frog|off`], [off; SDL only: a sprite in the workspace tag's blank space], + [#word("Font") `<name>[:<size>]`, #word("Fonts")], [SDL and macOS only; size 8-72 (pixels in SDL, points on macOS)], + [#word("TaglineSize") `<1-100>`], [82: tagline face, percent; SDL and macOS], + [#word("WindowOpacity") `<0-100>`], [100; SDL only: everything but text and the cursor], + [#word("Ligatures")], [on; SDL only, macOS draws CoreText's own], + [#word("Pet") `cat|frog|off`], [off; SDL only: a sprite in the workspace tag's blank space], ) #word("LocationsConfig") with no argument prints the current settings as a line that can be run again; with fields it changes only those: -`LocationsConfig context:5 tscontext:on tslocations:off layout:stacked`. +#word("LocationsConfig") `context:5 tscontext:on tslocations:off layout:stacked`. `context` (0) is the source lines shown above and below each match; `tscontext` (off) includes the enclosing tree-sitter declaration headers; `tslocations` (on) shows a location on each declaration header; `layout` @@ -407,19 +441,19 @@ turning it off: #word("PanelSlide"), #word("PanelZoom"), #word("PanelCurtain"), #word("PanelScramble"), #word("PanelType"); all start off, and the web shell has none. Scene passes (the SDL window, and one attached to a detached session), each at a level 0-3 (`on` is 2), all -off: `Crt`, `Bloom`, `Vignette`, `Grain`. -`Shader <file.glsl>` adds a Shadertoy file written for ghostty to the -chain (`Shader off` removes it; it recompiles when saved); -`ShaderAnimation off|on|always` says when the chain animates by itself. The -focused pane can stand off the page: `Lift shadow|rim|auto|off`, +off: #word("Crt"), #word("Bloom"), #word("Vignette"), #word("Grain"). +#word("Shader") `<file.glsl>` adds a Shadertoy file written for ghostty to the +chain (#word("Shader") `off` removes it; it recompiles when saved); +#word("ShaderAnimation") `off|on|always` says when the chain animates by itself. The +focused pane can stand off the page: #word("Lift") `shadow|rim|auto|off`, #word("InactiveDim") `<percent>`, #word("Motion") `off|crisp|smooth|bouncy|playful` (default -`smooth`), `SelectionGlow`, `HoverGlow`, `Occlusion`, -`Parallax`, #word("JumpTrail"), #word("ChipShadow"), -#word("ThumbFlash"), `CursorBlink`, `GripWidth <50-300>`. Most are +`smooth`), #word("SelectionGlow"), #word("HoverGlow"), #word("Occlusion"), +#word("Parallax"), #word("JumpTrail"), #word("ChipShadow"), +#word("ThumbFlash"), #word("CursorBlink"), #word("GripWidth") `<50-300>`. Most are the GUI's; #word("InactiveDim") works everywhere, and #word("JumpTrail"), #word("ChipShadow") and #word("ThumbFlash") are the terminal's. No effect may lower the contrast of text, the selection or a focus indicator. -`EffectCode <effect>` lists that effect's sources under `/virtual` when the +#word("EffectCode") `<effect>` lists that effect's sources under `/virtual` when the build embeds them. Resting the pointer on text for about 32 ms (`look_preview_delay_frames`, @@ -489,8 +523,8 @@ renames the buffer (relative to the pane's directory) and marks nothing dirty; #word("Save") then writes under the new name. A name takes any byte a file name can hold, blanks, control bytes and bytes not UTF-8 included, so what #file("name") reads writes back as it was; refused (EINVAL) are -an empty name, a second line and a NUL (`bad character in file name: an -empty name`, `...: a NUL`). Up to +an empty name, a NUL (`bad character in file name: an +empty name`, `...: a NUL`) and a second line, by the write that brings it (`invalid file name: one name a write, on one line`). Up to 255 bytes a component. A name that can never be valid (a terminal's, a component over 255 bytes, a path too long) is refused by the write that holds it. The ctl word `name x` takes all after its one @@ -509,8 +543,9 @@ pane's, so #file("addr"), #file("data"), #file("dot") and a `file:<addr>` #word( no write (`this pane has no text`). *Image panes.* An image pane's tag reads `img petscii:on|off -palette:commodore|terminal ascii:on|off <path>`. `petscii` is glyph art -instead of pixels (#word("Petscii") toggles it); `palette` is which 16 +palette:commodore|terminal ascii:on|off <path>`. `petscii` says what is +drawn: glyph art (`on`) or pixels (`off`). With no graphics it is always +`on`; #word("Petscii") `on|off` chooses for when graphics are there. `palette` is which 16 colours the glyph art uses, the C64's (`commodore`) or the terminal theme's own 16 (#word("Palette") toggles it); `ascii` is whether the printable ASCII bitmaps join the glyph set the matcher picks from @@ -520,11 +555,10 @@ printable ASCII bitmaps join the glyph set the matcher picks from a PDF's #word("PdfFit") (`width|height`) and #word("PdfTint") (`disabled|filtered|full`) take the value its ctl read shows; bare, they step to the next. -A terminal pane showing kitty graphics shows `petscii:on` or `petscii:off` -after its directory in its tag; #word("Petscii") toggles it there too: on -draws the program's images as glyph art instead of host pixels, off goes -back to pixels. A terminal with no images shows the word only while it is -on. +A terminal pane showing kitty graphics shows `petscii:on|off` after its +directory in its tag, saying the same, and #word("Petscii") chooses there +too. A terminal with no images shows the word only while #word("Petscii") +is on. *#file("sel")* reads the selected text; a write replaces it and leaves the written text selected, and one open's writes run on from the last. @@ -536,10 +570,11 @@ makes its column the active one (a folded pane stays folded); `no such pane`, or while a column or workspace tag has the keyboard. *Pane ctl.* Reading it gives acme's status line: serial, tag length, body -length, isdir (0), dirty, width in cells, font, tab width, undo available, +length, isdir (1 for a directory pane, else 0), dirty, width in cells, font, tab width, undo available, redo available, then `current`/`notcurrent`, a REPL's id if bound, `collapsed` when it is, and for a PDF `fit:width|height -tint:disabled|filtered|full`. It +tint:disabled|filtered|full`. Each field ends in a blank and the line has +no newline, as acme's has none (`cat ctl; echo`). It takes: - the pane builtins: #word("Del") (from the keyboard between two panes it @@ -561,14 +596,14 @@ takes: - `answer <choice>` to the question the pane asks on its message row, logged `ask <serial> <what> <choices>` (`ask 4 del k j`, `ask 4 repl a b`, `ask 4 save path`); `answer -` takes it back. - acme's lowercase ctl words, done by what replaces each: `name x`, `put` - (Save), `clean`/`dirty`, `del`, `delete` (no asking), `dot=addr`, + (#word("Save")), `clean`/`dirty`, `del`, `delete` (no asking), `dot=addr`, `addr=dot`, `limit=addr`, `mark`/`nomark`, `show`, `cleartag`. `dump`, `dumpdir`, `font`, `menu`, `nomenu` are refused, EINVAL. These lowercase words are ctl-only: written to an #file("exec"), `del` is a command line. A file changed on disk reloads by itself only when the buffer has no unsaved edits; otherwise it stays dirty, says `<name> changed on disk (get reloads it, Save overwrites it)`, logs `changed <serial>`, and its next -#word("Save") warns once. +#word("Save") warns once. A file whose disk text is what the pane was read or saved as is no change: an #word("Undo") back across #word("Get") `file` or `e` to unsaved edits says nothing changed, and #word("Save") writes it. == Addresses and data <addresses> @@ -651,15 +686,60 @@ ceiling: == Edit <edit> #word("Edit") `<sam commands>` on a pane's #file("ctl") or #file("exec") (or the -root's, at the pane with the keyboard) runs acme's Edit on the body: addresses as -above, commands `x y g v c a i d s p = m t u` and `{ }`. All changes are -one undo step, applied only if every command succeeds; a failure changes -nothing and fails the write with acme's words (`Edit: no substitution`). -An `x` that finds nothing succeeds silently. `p` and `=` print to the -directory's `+Errors`. Not there: `b B D e r w f X Y`, `< | >`, -`\1`-`\9`. In `s`, `&` is the match (`\&` a literal); in `c`, `a`, `i` it -is a literal. `y` yields the stretch before the first match too. Braces -take a command a line, so a block goes on one open, in one write or +root's, at the pane with the keyboard) runs acme's #word("Edit") over the open text +panes, from that pane's body. Addresses are as above, and `"re"` is the one +open file whose line matches. Commands: + +- `x y g v c a i d s p = m t u` and `{ }`. +- `X`/`Y` run a command in each open file whose line (` +. /path`, `'` when + edited) matches, or does not, in the order the panes were opened (as + #file("index") lists them): `X/'/w` writes every edited file. +- `b` makes a file current; `B` opens files, every name checked before any + opens; `D` closes panes (an edited one on the second asking, as + #word("Del")). +- `e` loads a file over the whole text as #word("Get") `file` does, once the + rest of the Edit is done: the pane takes its name and is clean, one undo + step puts both back, and unsaved edits are asked about once (a scratch + under 100 bytes is not); the file + takes no other command in that Edit. `r` reads a file over dot. `w` writes + all of it, or the address, to its file or a name; all of it to its own + name leaves it clean. A `w` to its own file changed on disk since it was + read is refused once, as #word("Save") is (`modified on disk since read (w + again to overwrite)`), and the next `w` writes it; in an `X` the other + files are written, and the refusal names those it left. `f` names the pane and prints its line. File names + are relative to the file's directory, and `~` is the home directory. +- `<cmd` replaces dot with what `cmd` writes, `|cmd` pipes dot through it, + `>cmd` sends dot to it and prints what it writes. + +Each command runs in its file's directory through #word("Shell"), off the +loop, so the editor goes on, with what a pane's command is given: +`$PARDES_MOUNT`, `$PARDES_9P`, `$PARDES_PID`, and `$winid` the Edit's pane. The write that ran the Edit is held and +answered when they are done, its connection serving other requests +meanwhile (a command may read the session through its mount). A command +that writes the #file("ctl") its Edit came by needs `<>` on both sides, the +Edit's write (`exec 3<>$p/ctl; echo 'Edit ...' >&3`) and its own (`1<>`): +with `>` or `>>` on either, the kernel holds the second write until the +first is answered, the command is stopped at its 10-second limit, and the +Edit fails (EIO), changing nothing. For the same reason a second Edit written +with `>` to that #file("ctl") waits for the first to finish rather than being +refused; through its own `<>` open, or another pane's #file("ctl"), it is +refused `busy` (EBUSY) at once. A flush of the Edit's write (an interrupted +writer) kills the commands and changes nothing. +Such an Edit is a write of its own: one with other lines is refused before +any runs. One Edit's commands run at a time in a session, at most 1024 of +them. While they run, an Edit with no commands runs as usual unless it +would change, undo, rename, close or write a file the running one changes; +that, and a second Edit with commands, is refused `busy` (EBUSY), as are +#word("Del") (acme's `delete`), `rmdir`, #word("Undo"), #word("Redo"), #word("Get") and #word("Zerox") on a pane +it changes or runs a command on; a session that ends lets the commands go. A command that fails (an exit status, 10 seconds, 1 MiB of output) +fails the Edit, its stderr in `+Errors`. Each file's changes are one undo step, applied only if +every command succeeds; a failure changes nothing and fails the write with +acme's words (`Edit: no substitution`), as does a file edited while the +commands ran. An `x` that finds nothing succeeds silently. `p`, `=` and `>` +print to the directory's `+Errors`. Not there: `B <cmd`, `D <cmd`, the `'` +address, `\1`-`\9`. In `s`, `&` is the match (`\&` a literal); in `c`, `a`, +`i` it is a literal. `y` yields the stretch before the first match too. +Braces take a command a line, so a block goes on one open, in one write or several: #cmd("printf 'Edit ,x/foo/{\\ni/</\\na/>/\\n}\\n' > $p/ctl") @@ -716,7 +796,7 @@ back as a record: run it through #file("ctl") instead. == REPLs <repls> #word("Repl") `python` on a terminal's #file("ctl") (or in its tag) binds it as -that language's REPL: a middle-click or #key("Tab") on a `.py` body +that language's REPL: #word("Exec") (or #key("Tab")) on a `.py` body then types the text into the REPL instead of running it; builtin words, tag words, #word("Exec") `<text>` and #raw("@`cmd`") words still run. #word("Repl") takes the languages a code fence names (ada, bash, c, c_sharp, clojure, @@ -831,7 +911,7 @@ at 200, ending in `…`. Control characters become spaces. permitted (`permission denied`, EACCES through a mount); ownership is synthetic. Linux v9fs's truncation `mtime` hint is accepted and dropped. - #file("/src/") (and #file("/shaders") on GUI builds) with - `-Dembed-sources=true`; `EffectCode <effect>` lists an effect's files + `-Dembed-sources=true`; #word("EffectCode") `<effect>` lists an effect's files under `/virtual`. = The pardes command <command-line> @@ -842,7 +922,7 @@ a FILE not there yet opens an empty pane that #word("Save") creates, making its directories. What the session refuses (a bad name; a name under a directory you may not search or write, `permission denied`) is printed and the exit is 1. `--` ends the options (`pardes -- -name`). -`pardes --wait FILE` (`-w`) returns 0 when the pane showing FILE is +`pardes --wait FILE` (`-w`; bare, it says it needs a FILE) returns 0 when the pane showing FILE is deleted, 1 when the session goes away (against a dead `$PARDES_9P` it says the session is gone); with `PARDES_9P` set but no pane of its own it opens FILE in that session and @@ -871,7 +951,7 @@ A command pane runs in the directory it started in, whatever its command does with `cd`, and a relative #word("Look") in it resolves there. The next command for that directory reuses a finished one (from a column tag, only one in that column); one still running, one a background job still prints to, or -one a #file("exec") open still holds is never reused. +one a #file("exec") open still holds is never reused. In a command pane, #key("n") walks that pane's own `file:line` places first (make's errors), whichever pane was walked last, then on through the others. = Find and Grep <find-grep> @@ -904,7 +984,7 @@ it was. `--no-prefix` diff's paths are kept. - *Sessions.* Bare `--detach` names the session after its pid; bare `--attach` needs exactly one session; a second `--detach=NAME` while NAME - runs says so and exits 1. Frontends share the smallest common size. With + runs (a plain session is named by its pid) says so in words and exits 1. Frontends share the smallest common size. With none attached, `size C R` sets the screen, messages clear by the clock, and a pty reports its size in pixels at the last frontend's cell size (8×16 before any), as CSI 14, 16 and 18 t do. @@ -912,11 +992,12 @@ it was. absolute, else `~/.config/pardes/init` (macOS: `~/Library/Application Support/pardes/init`). A line that fails is a notice and `err - init file line N: why`, and the rest still run; a - setting only the other frontend has (`Font` in a terminal) is skipped; + setting only the other frontend has (#word("Font") in a terminal) is skipped; text that is no builtin is not run; saving the init file in a pane - applies its settings again. A dump keeps panes, columns, tags, + applies its settings again and says a bad line as startup does + (`err - init file line N: why`), its commands not run again. A dump keeps panes, columns, tags, selections, the theme and changed settings, but not a picture or a PDF - that is on disk (Restore reads it from there); a terminal + that is on disk (#word("Restore") reads it from there); a terminal comes back with its last MiB of output and a new shell in its old directory; undo history and REPL bindings are not kept. A crash appends two lines (build, time, platform, pid; the panic message) to `crashes` @@ -955,8 +1036,8 @@ Under `9ns --mntgen` (which sets `NINE_MNTGEN=1`) a session is at `$NINE_MOUNT/<service>/<name>`, pardes's `$NINE_MOUNT/pardes/<name>`, and every pane pardes spawns gets it as `$PARDES_MOUNT`. Under `9ns --unix SOCK -- cmd` the session is `$NINE_MOUNT` itself, and `$PARDES_MOUNT` is unset. -plan9port's `9p write` opens with OTRUNC, so it replaces a whole -#file("body"); append with `>>` through a mount. Through a FUSE mount +plan9port's `9p write` opens with OTRUNC, so on #file("body") it replaces +the whole text. To append, use `>>` through a mount. Through a FUSE mount bash's `read -t` cannot time out: wrap a follow loop in `timeout`. The scripting chapter's rule (a mount, else `9p`) covers most uses. Two more: @@ -987,6 +1068,34 @@ with Client(sys.argv[1]) as c: # a socket path, or (ip, port) `client.screen()` returns the parsed #file("/screen"). += Coming from acme <from-acme> + +#pairs( + [`$NAMESPACE/acme`], [not posted there: a session is `$XDG_RUNTIME_DIR/9p/pardes/<name>`; reach it with `9p -a "unix!$PARDES_9P"` or a `9ns --mntgen` mount (#doc("fs", section: "other-clients"))], + [`N/`], [#file("pane/N/"), N the pane's serial], + [`new/ctl`], [read #file("pane/new"): it makes a pane and answers its serial; `rmdir pane/N` closes it], + [`index`], [#file("index") lines are serial, kind, dirty, name, column (acme: id, tag and body lengths, isdir, dirty, tag)], + [rune offsets], [bytes everywhere, event offsets and counts included; addresses snap to rune boundaries], + [`addr` reset on first open], [#file("addr") is the pane's; no open resets it (write `0`)], + [OTRUNC on `data` ignored], [`: > data` deletes the addressed text; OTRUNC on #file("body") (`9p write`) replaces it all], + [event flags 1, 2, 4, 8], [1, 4 and 8; never 2, so no expansion record follows], + [`Get`], [#word("Get") reads the file again, refusing unsaved edits once (a scratch under 100 bytes unasked, as #word("Del") closes it; a file not there, or a directory, is said first); `Get file` loads that file into the pane, which takes its name, and one that fails changes nothing; #word("Undo") after it, or after #word("Edit")'s `e`, puts the old name back with the old text and its saved state; in a directory pane #word("Get") reads the directory again and `Get file` is refused (#word("Look") opens the file) (also `get` on #file("ctl"))], + [`Put`, `Delete`, `Load`], [#word("Save"); a #word("Del") that does not ask; #word("Restore")], + [`Putall`], [#word("Putall"): every pane with unsaved edits to a file is saved, a #word("Zerox") pair once, a refused one said; with a refusal, its write is answered once the other saves have landed], + [`Zerox`], [#word("Zerox"): a second pane on the buffer, one text, undo and unsaved state, its own scroll and cursor; an event reader on one hears no edit made through the other; the twins are kept across #word("Dump") and #word("Restore")], + [`Tab`], [#word("Tab") `N`, 1-16: for every pane, not per window; bare, it says the width, from the root's #file("ctl") as from a pane's #file("exec")], + [`Incl`], [#word("Incl"): for the session, not per window, seeded with `/usr/include` and `/usr/local/include`; it takes absolute (or `~`) directories that exist, and `Incl -` alone clears the list; a name found nowhere else (`stdio.h`, `<stdio.h>`) is tried there], + [`Indent`], [always on: #key("Enter"), #key("o") and #key("O") keep the line's indent as it is], + [`Snarf`, `Cut`, `Paste`], [refused: the chords, #key("y"), #key("p")], + [`Font`, `Send`, `ID`], [#word("Font"); #word("Repl") and #word("Exec"); `$winid`], + [acme's other builtins], [refused: `Sort`, `Local`, `Abort` (plan9port's debugging word)], + [Edit], [every acme command but `B <cmd`, `D <cmd` and the `'` address; no `\1`-`\9`, and an alternation takes the first branch that matches, not the longest; a failing `< | >` command changes nothing, where acme puts in what it wrote (#doc("fs", section: "edit"))], + [`win`], [#word("Tty") is a VT terminal pane; #file("pty/run") runs a line at its prompt and answers `exit N` and the output; with #word("Repl") bound, #word("Exec") on a source pane types the text into it], + [a directory window], [as acme's: a text pane named `dir/` (#file("index") kind `text`, #file("ctl") isdir 1), its entries in columns sorted bytewise, dotfiles shown, a directory's marked `/`; blanks pad the columns where acme's tabs do; a #word("Look") at an entry is from that directory, `Get` or a look at it again reads it again, and an edit is kept until then rather than lost to a resize; never dirty, #word("Save") refuses it; #word("DirLook") `terminal` types `ls` into a terminal there instead], + [the plumber], [none: #word("Look") on an `http://` or `https://` URL runs `xdg-open` (`open` on macOS); files, addresses and directories follow built-in rules], + [#key("Esc") selects what was typed], [#key("Esc") leaves insert mode, or goes back a pane (#doc("tags", section: "modes"))], +) + = Limits <limits> #pairs( diff --git a/docs/typ/scripting.typ b/docs/typ/scripting.typ index 9d65f8de..590d71ac 100644 --- a/docs/typ/scripting.typ +++ b/docs/typ/scripting.typ @@ -3,21 +3,31 @@ // reference. #import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs -Every session is a virtual filesystem, served over 9P, as acme's is: its -panes, columns and tags are files. `cat`, `echo >` and `ls` are the whole -interface, and a program that opens -files is an extension. The reference (#doc("fs")) has every file. +Every session is a virtual filesystem, served over 9P and modelled on +acme's (#doc("reference", section: "from-acme")), so a program that opens +files is an extension: + +``` +$ ls $m +README col commands ctl exec focus index layout listeners log +look os pager pane recent screen status tag tagexec +$ cat $m/index +1 term 0 /home/me/src 1 +2 text 0 /home/me/src/+New 1 +``` + +The reference (#doc("fs")) has every file. = Finding the session <find-the-session> -Shells and command panes in a session get `PARDES_9P` (its socket) and -`PARDES_PANE` (their own pane's serial). A command run from a pane's tag -or text also gets `$winid`, the serial of the pane it was clicked in, as -acme's commands do (unset from a column's or the workspace's tag). +#pairs( + [`PARDES_9P`], [the session's socket, in every shell and command pane], + [`PARDES_PANE`], [the serial of the pane the shell runs in], + [`$winid`], [the serial of the pane a command was clicked in, as in acme (unset from a column's or the workspace's tag)], + [`PARDES_MOUNT`], [the session as a directory, under `9ns --mntgen` (#doc("setup", section: "ninens"))], +) -Under `9ns --mntgen` (see setup) every pane also gets `PARDES_MOUNT`, the -session as a directory. That is the session line every recipe here starts -from: +Every recipe here starts from this line: #cmd("m=${PARDES_MOUNT:-}\ncat \"$m/index\"") When it is empty (no mount), plan9port's `9p` talks to the socket instead: `cat $m/x` is `9p -a "unix!$PARDES_9P" read x`, and `echo y > $m/x` is @@ -25,10 +35,8 @@ When it is empty (no mount), plan9port's `9p` talks to the socket instead: = Your first tag word <first-tag-word> -A script on `PATH` is a word you can click: command panes inherit pardes's -environment. This `Fmt` runs `gofmt` on the Go file whose tag it was -clicked in and reloads the pane. It finds the pane through `$winid`, not -`PARDES_PANE`, which is the command pane it runs in: +A script on `PATH` is a word you can click. This `Fmt` finds its pane +through `$winid` (`PARDES_PANE` is the command pane it runs in): ```sh #!/bin/sh @@ -43,11 +51,9 @@ else fi f=$(rd pane/$n/name) # the file it shows case $f in *.go) ;; *) echo "Fmt: $f is not Go" >&2; exit 1 ;; esac -echo Save | wr pane/$n/ctl && gofmt -w "$f" && echo get | wr pane/$n/ctl +echo Save | wr pane/$n/ctl && gofmt -w "$f" && echo get | wr pane/$n/ctl # get: reload ``` -`get` on a pane's ctl reloads its text from the file on disk. - Type `Fmt` into a Go pane's tag and #word("Exec") it (middle-click: run the builtin a word names, or else run it as a shell line); its output shows in a command pane. To have `Fmt` in every Go file's tag, follow the @@ -99,10 +105,8 @@ the text names, or else find it): they arrive as acme's records instead of actin record back has pardes do it. A record is a line, `MX31 36 1 5 Upper`: who (`M` mouse, `K` keyboard, `E` or `F` a write to a file), what (`X` #word("Exec") or `L` #word("Look") in the body, `x` `l` in the tag), the range, a flag, the text's length and -the text (#doc("fs", section: "event")). This helper -gives pane `$1` the tag words `Upper` (upper-case the selection) and -`Done`; every other click is written back, and when it ends the pane's -clicks are pardes's again: +the text (#doc("fs", section: "event")). This helper owns the tag words +`Upper` and `Done` in pane `$1` and writes every other click back: ```bash #!/bin/bash @@ -147,7 +151,12 @@ exec 3<&- # let event go: clicks act again = An isolated session -Never experiment on a session someone is using. Strip every `PARDES_*` -variable first, then `pardes --detach=NAME &` with its own `HOME` and -`XDG_*` directories, and mount it with `9ns --mntgen` (it is -`$NINE_MOUNT/pardes/NAME`). Kill it when done. +Never experiment on a session someone is using. Under `9ns --mntgen`, +start one with an empty environment and home, and quit it when done: + +``` +env -i PATH="$PATH" HOME="$(mktemp -d)" XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" pardes --detach=try & +m=$NINE_MOUNT/pardes/try +cat $m/index +echo Exit > $m/exec +``` diff --git a/docs/typ/setup.typ b/docs/typ/setup.typ index cc5b5552..df99a45f 100644 --- a/docs/typ/setup.typ +++ b/docs/typ/setup.typ @@ -3,8 +3,6 @@ // works best. Each snippet says in one line why it is there. #import "style.typ": key, keys, btn, chord, word, tag, addr, file, cmd, doc, pairs -pardes runs as it is; a few lines elsewhere make it fit. - = Install <install> #include "install.typ" @@ -61,17 +59,16 @@ fi = A pager <pager> -`pardes -` reads its standard input into the directory's one `+Pager` -pane, colours kept, and returns. With #word("Pager") `pardes` (the default) a -terminal's shell gets `PAGER`, `GIT_PAGER` and `SYSTEMD_PAGER` set to it, -and `SYSTEMD_PAGERSECURE=0`, each only where your environment does not set -it. So `git log`, `journalctl` or `man` output arrives as a pane to search -and click in, a diff drawn as one; command panes page through `cat`. `man` -reads `MANPAGER` first, which pardes never sets. Any pager of your own wins; -#word("Pager") `off` in the startup file keeps them all yours, for terminals started -after it. git colours what it pages by default (`color.pager`); ask other -programs for colour outright (`ls --color=always | pardes -`), and put -#word("PagerColor") `off` in the init file for plain text. +#cmd("ls --color=always | pardes - # into the directory's +Pager, colours kept") + +With #word("Pager") `pardes` (the default) a terminal's shell gets +`PAGER`, `GIT_PAGER` and `SYSTEMD_PAGER` set to it (and +`SYSTEMD_PAGERSECURE=0`) wherever your environment leaves them unset, so +`git log`, `journalctl` and `man` arrive as a pane, a diff drawn as one; +command panes page through `cat`. `man` reads `MANPAGER` first, which +pardes never sets. #word("Pager") `off` in the startup file leaves them all +yours, for terminals started after it; #word("PagerColor") `off` makes the +text plain. = yazi in a terminal pane <yazi> @@ -105,9 +102,7 @@ script on that `PATH` is a word you can click. = Language servers <language-servers> -pardes starts a language server for a file it knows, finding the program -on `PATH`; `PARDES_LSP_<LANG>` names another, and an empty value turns it -off. +pardes starts a language server for a file it knows, from `PATH`: #pairs( [`.zig`], [`zls` (`PARDES_LSP_ZIG`)], @@ -118,14 +113,16 @@ off. [`.py`], [`pyright-langserver --stdio` (`PARDES_LSP_PY`)], ) +#cmd("PARDES_LSP_ZIG=$HOME/src/zls/zig-out/bin/zls pardes # another zls\nPARDES_LSP_PY= pardes # none for .py") + #word("Lspinfo") (#key("SPC l i")) says what is running. = Fonts and themes <fonts-and-themes> The terminal build uses your terminal's font. The SDL window carries Adwaita Mono and finds others in `/usr/share/fonts`, -`/usr/local/share/fonts`, `~/.local/share/fonts` and `~/.fonts`; `Font -name:size` picks one. `Theme <name>` and `ThemeFile` are in the themes +`/usr/local/share/fonts`, `~/.local/share/fonts` and `~/.fonts`; #word("Font") +`Iosevka:16` picks one. #word("Theme") `<name>` and #word("ThemeFile") are in the themes chapter (#doc("themes")). = plan9port <plan9port> diff --git a/docs/typ/style.typ b/docs/typ/style.typ index 065cc210..b5c2ff85 100644 --- a/docs/typ/style.typ +++ b/docs/typ/style.typ @@ -33,6 +33,7 @@ reference: ("reference", none), themes: ("themes", none), building: ("building", none), + builtins: ("builtins", none), tags: ("guide", none), fs: ("reference", none), config: ("guide", "config"), @@ -55,6 +56,7 @@ (id: "cheatsheet", title: "Cheatsheet", file: "cheatsheet.typ"), (id: "scripting", title: "Scripting", file: "scripting.typ"), (id: "reference", title: "Reference", file: "reference.typ"), + (id: "builtins", title: "Builtins", file: "builtins.typ"), (id: "themes", title: "Themes", file: "themes.typ"), (id: "building", title: "Building, for contributors", file: "building.typ"), ) @@ -174,9 +176,52 @@ ((mouse((held,)),) + clicks.map(c => mouse((held, c)))).join(arrow) } -/// A tag word or builtin, as it sits in a tag. -#let word(w) = context if html-out() { span("word", raw(w)) } else { - box(fill: palette.tag-bg, inset: (x: 1.4pt, y: 0pt), outset: (y: 1.4pt), m(w, fill: palette.tag-fg)) +/// A tag word or builtin, drawn as a thing to click: the tag's ground and +/// ink in the tag's monospace, over a rule. Look and Exec take acme's look +/// and exec sweep colours (green and red, src/themes/acme.zig) for the +/// rule; every other word the tag's box colour. In HTML a <code +/// class="word">, so a text browser still shows the plain word. +#let word-accent = (Look: rgb("#006600"), Exec: rgb("#aa0000")) + +/// Every builtin of either build, written by `zig build builtins-json` +/// from the registry and the Help rows (src/builtins_json.zig), a file per +/// build: name, leader, also (Help's other shortcuts), arg, scope, setting, +/// choices, doc. Merged here, each with `platforms`: "both", "tty" (the +/// terminal only) or "gui" (the window only). +#let builtin-data = { + let tty = json("builtins-tty.json") + let gui = json("builtins-gui.json") + let in-tty = tty.map(b => b.name) + let in-gui = gui.map(b => b.name) + let all = (tty + gui.filter(b => b.name not in in-tty)).sorted(key: b => b.name) + all.map(b => { + b.insert("platforms", if b.name in in-tty and b.name in in-gui { "both" } else if b.name in in-tty { "tty" } else { "gui" }) + b + }) +} +#let builtin-names = builtin-data.map(b => b.name) + +#let word-chip(w) = context if html-out() { + let base = w.split("+").first() + let kind = if base == "Look" { " look" } else if base == "Exec" { " exec" } else { "" } + html.elem("code", attrs: (class: "word" + kind), w) +} else { + let rule = word-accent.at(w.split("+").first(), default: palette.grip) + box( + fill: palette.tag-bg, inset: (x: 1.4pt, y: 0pt), outset: (y: 1.4pt), + stroke: (bottom: 0.6pt + rule), + m(w, fill: palette.tag-fg), + ) +} + +/// A builtin's word links to its glossary entry wherever the glossary is +/// part of the same output (the book, the site); elsewhere it is the chip. +#let word(w) = context { + let base = w.split("+").first() + let target = label("builtin-" + base) + if doc-links.get() and base in builtin-names and query(target).len() > 0 { + link(target, word-chip(w)) + } else { word-chip(w) } } /// A whole tagline: its grip, the path, then its words. @@ -263,15 +308,34 @@ (name: "git.0x4200.cafe", web: "https://git.0x4200.cafe/pardes", clone: "https://git.0x4200.cafe/pardes.git"), ), license: "ISC", + changes: "https://git.sr.ht/~gbrls/pardes/tree/main/item/src/CHANGELOG.md", + // built binaries to download: the version they are, where the + // checksums are, and a file per program (install.typ shows them) + download: ( + version: "0.23", + sums: "https://pub-66384ba880784f119ce95123b92fa5c6.r2.dev/SHA256SUMS", + files: ( + (program: "pardes", what: "the terminal build, static, any x86_64 Linux", + url: "https://pub-66384ba880784f119ce95123b92fa5c6.r2.dev/pardes-x86_64-linux-static", bytes: 62223912, + sha256: "740992b18bdcfefc4db449dcbdb12423b4505eb2b3fb360aaa6dc57cc2fdda9f"), + (program: "pardes-gui", what: "the window, x86_64 Linux with glibc 2.29 or later; it loads Wayland or X11 and GL or Vulkan from the system", + url: "https://pub-66384ba880784f119ce95123b92fa5c6.r2.dev/pardes-gui-x86_64-linux", bytes: 66786824, + sha256: "a1c68b347d424b8077fb5af4050dd8455dc849adb0c1e2fc325b1646f5a255e5"), + ), + ), ) /// A glossary: like #pairs, under its own heading. On paper the heading /// and the table; in HTML a <details> that starts closed, its summary the /// heading and the count, so a reader who knows the words skips them. #let glossary(title, lbl, ..cells) = context if html-out() { + // a real definition list, so a text browser reads term, then meaning html.elem("details", attrs: (class: "glossary"), { - html.elem("summary", [#heading(title) #lbl #html.elem("span", attrs: (class: "count"), "(" + str(calc.quo(cells.pos().len(), 2)) + ")")]) - pairs(..cells) + html.elem("summary", [#heading(title) #lbl]) + html.elem("dl", for (term, meaning) in cells.pos().chunks(2) { + html.elem("dt", term) + html.elem("dd", meaning) + }) }) } else { [#heading(title) #lbl] @@ -299,3 +363,252 @@ }) }) } + +/// The newcomer's words, first in the glossary; every other builtin goes +/// under its group below. Each must be in builtins.json. +#let everyday = ("Look", "Exec", "Save", "Undo", "Redo", "New", "Newcol", "Del", "Delcol", + "Tty", "Kill", "Find", "Grep", "Recent", "Dump", "Restore", "Exit", "Help", "Tutor", "Themes", "Config") +/// Debugging and developer words, last whatever their leader path. +#let internals = ("Debug", "EffectCode", "Lspwhy", "Messages", "DumpConfig", "DumpThemes") + +/// The glossary's groups, in order: by the leader path's first key, the +/// way Help groups them, then settings, the words with no path, internals. +#let builtin-groups = ( + (title: "Files", keys: ("f",)), + (title: "Panes and columns", keys: ("c", "d")), + (title: "Moving and jumps", keys: ("w", "j")), + (title: "Terminals", keys: ("n",)), + (title: "Language server", keys: ("l",)), + (title: "Sessions", keys: ("s", "q")), + (title: "Help", keys: ("h", "?")), + (title: "Clipboard", keys: ("y", "Y", "p", "P", "R")), + (title: "Toggles", keys: ("t",)), + (title: "Settings and themes", keys: "setting"), + (title: "Animations", keys: ("a",)), + (title: "Other words", keys: "none"), +) + +#let group-of(b) = { + if b.name in internals { return "internals" } + if b.setting { return "setting" } + if b.leader == none { return "none" } + b.leader.split(" ").at(1) +} + +/// Help spells a shortcut its own way (C-w left, right-click, topbar); +/// this draws it as the docs do. +#let shortcut(s) = { + if s == "topbar" { return [in the workspace tag] } + if s == "middle-click" { return btn("B2") } + if s == "right-click" { return btn("B3") } + if s == "left-click" { return btn("B1") } + let names = (enter: "Enter", tab: "Tab", escape: "Esc", left: "Left", right: "Right", up: "Up", down: "Down", + home: "Home", end: "End", backspace: "Backspace", delete: "Delete", page_up: "PgUp", page_down: "PgDn") + key(s.split(" ").map(t => { + let mods = "" + while t.len() > 2 and t.at(1) == "-" and t.at(0) in ("C", "A", "S") { + mods += (C: "Ctrl-", A: "Alt-", S: "Shift-").at(t.at(0)) + t = t.slice(2) + } + mods + names.at(t, default: t) + }).join(" ")) +} + +/// A doc comment's text, its `code` spans set as code. +#let prose(t) = t.split("`").enumerate().map(((i, part)) => if calc.odd(i) { raw(part) } else { part }).join() + +#let builtin-entry(b) = [ + #heading(depth: 2, raw(b.name)) #label("builtin-" + b.name) + #let keys = (if b.leader != none { (key(b.leader),) } else { () }) + b.also.map(shortcut) + #if b.platforms != "both" [#emph(if b.platforms == "gui" [window only] else [terminal only]) · ] + #if keys.len() > 0 [#keys.join([, ]) · ] + #if b.choices != none [#raw(b.choices.replace(", ", "|")) · ] else if b.arg [takes an argument · ] + #prose(b.doc) +] + +/// The glossary: everyday words first, then the groups, then internals, +/// each alphabetical. A level-1 heading per group in the content file. +#let builtin-glossary() = { + let by-name = (:) + for b in builtin-data { by-name.insert(b.name, b) } + [= Everyday <builtins-everyday>] + for n in everyday.sorted() { builtin-entry(by-name.at(n)) } + let rest = builtin-data.filter(b => b.name not in everyday) + for g in builtin-groups { + let members = rest.filter(b => { + let k = group-of(b) + if type(g.keys) == str { k == g.keys } else { k in g.keys } + }) + if members.len() > 0 { + heading(depth: 1, g.title) + for b in members { builtin-entry(b) } + } + } + let inner = rest.filter(b => group-of(b) == "internals") + if inner.len() > 0 { + [= Debugging and internals] + for b in inner { builtin-entry(b) } + } + // a builtin no group took is a bug in builtin-groups, not a silent drop + let placed = everyday + rest.filter(b => { + let k = group-of(b) + k == "internals" or builtin-groups.any(g => if type(g.keys) == str { k == g.keys } else { k in g.keys }) + }).map(b => b.name) + for b in builtin-data { assert(b.name in placed, message: "builtin " + b.name + " is in no glossary group") } + // last, every word at once, A to Z, each a link to its entry + [= All builtins, A–Z <builtins-a-z>] + context if html-out() { + html.elem("p", attrs: (class: "all-words"), + builtin-data.map(b => link(label("builtin-" + b.name), word-chip(b.name))).join(" ")) + } else { + par(builtin-data.map(b => link(label("builtin-" + b.name), word-chip(b.name))).join(h(0.4em))) + } +} + +/// A directory tree drawn as `tree` draws one. `spec` is a raw block, a +/// line per file: two spaces of indent per level, the name (a directory +/// ends in `/`), two or more spaces, a one-line description, and an +/// optional `@label` naming the section that documents it, which becomes +/// a link wherever that section is in the same output. A description may +/// call #word, #key, #keys or #btn. src/config.zig's +/// test reads the same block in reference.typ against the served tree. +#let fstree(spec, root: "/") = { + // a description is text, unless it calls #word, #key or #btn + let said(d) = if d.contains("#") { eval(d, mode: "markup", scope: (word: word, key: key, keys: keys, btn: btn)) } else { d } + let rows = spec.text.split("\n").filter(l => l.trim() != "").map(l => { + let depth = calc.quo(l.len() - l.trim(at: start).len(), 2) + let m = l.trim().match(regex("^(\S+)(?:\s{2,}(.*?))?(?:\s+@([a-z0-9-]+))?$")) + (depth: depth, name: m.captures.at(0), desc: m.captures.at(1), anchor: m.captures.at(2)) + }) + // the connector for each row: is each ancestor, and the row itself, the + // last among its siblings? + let last(i) = { + let d = rows.at(i).depth + for j in range(i + 1, rows.len()) { + if rows.at(j).depth < d { return true } + if rows.at(j).depth == d { return false } + } + true + } + let lasts = range(rows.len()).map(last) + let prefix(i) = { + let d = rows.at(i).depth + let out = "" + // for each ancestor depth, the nearest row above at that depth + for k in range(d) { + let a = range(i).rev().find(j => rows.at(j).depth == k) + out += if lasts.at(a) { " " } else { "│ " } + } + out + if lasts.at(i) { "└── " } else { "├── " } + } + let named(r) = context { + let t = if r.anchor != none { label(r.anchor) } else { none } + if t != none and query(t).len() > 0 { link(t, r.name) } else { r.name } + } + let width = calc.max(..range(rows.len()).map(i => prefix(i).len() + rows.at(i).name.len())) + context if html-out() { + let nl = html.elem("span", attrs: (class: "nl"), "\n") + html.elem("pre", attrs: (class: "fstree", style: "--name:" + str(width + 2) + "ch"), { + html.elem("span", attrs: (class: "row root"), [#html.elem("span", attrs: (class: "name dir"), root)#nl]) + for (i, r) in rows.enumerate() { + let pad = " " * (width - prefix(i).clusters().len() - r.name.len() + 2) + html.elem("span", attrs: (class: "row"), { + html.elem("span", attrs: (class: if r.name.ends-with("/") { "name dir" } else { "name" }), + [#html.elem("span", attrs: (class: "branch"), prefix(i))#named(r)#pad]) + if r.desc != none { + html.elem("span", attrs: (class: "desc", style: "--cols:" + str(prefix(i).clusters().len())), said(r.desc)) + } + nl + }) + } + }) + } else { + set text(font: mono, size: 0.82em) + block(width: 100%, grid(columns: (auto, 1fr), column-gutter: 1.2em, row-gutter: 0pt, inset: (y: 0.12em), + text(weight: "bold", fill: palette.grip, root), [], + ..rows.enumerate().map(((i, r)) => ( + [#text(fill: palette.rule, prefix(i))#text(fill: if r.name.ends-with("/") { palette.grip } else { palette.ink }, + weight: if r.name.ends-with("/") { "bold" } else { "regular" }, named(r))], + text(font: "Libertinus Serif", size: 1.2em, fill: palette.tag-fg, if r.desc == none { [] } else { said(r.desc) }), + )).flatten())) + } +} + +/// A screenshot with numbered pins on it and their labels as text beside +/// it, so the labels read, search and translate as text. `src` is from +/// the repository root (the site serves it from the same path under +/// docs/site/); `size` is its pixel (width, height); each pin is (label, +/// x, y) in pixels of that image. +#let annotated(src, size, alt: "", ..pins) = { + let (w, h) = size + let pins = pins.pos() + context if html-out() { + let web = src.trim("/docs/site/", at: start) + html.elem("figure", attrs: (class: "annotated"), { + html.elem("div", attrs: (class: "frame"), { + html.elem("img", attrs: (src: web, alt: alt, width: str(w), height: str(h))) + for (i, (label, x, y)) in pins.enumerate() { + html.elem("span", attrs: (class: "pin", "aria-hidden": "true", + // repr, not str: str writes a negative with U+2212, which CSS rejects + style: "left:" + repr(calc.round(100 * x / w, digits: 2)) + "%;top:" + repr(calc.round(100 * y / h, digits: 2)) + "%"), str(i + 1)) + } + }) + html.elem("ol", attrs: (class: "pins"), for (label, x, y) in pins { html.elem("li", label) }) + }) + } else { + let width = 11cm + let k = width / w + let pin(n) = box(width: 1.25em, height: 1.25em, radius: 50%, fill: palette.mouse, + align(center + horizon, text(size: 0.75em, weight: "bold", fill: white, str(n)))) + block(breakable: false, grid(columns: (width, 1fr), column-gutter: 1.2em, align: horizon, + box(width: width, height: h * k, { + place(top + left, image(src, width: width, alt: alt)) + for (i, (label, x, y)) in pins.enumerate() { + place(top + left, dx: x * k - 0.625em, dy: y * k - 0.625em, pin(i + 1)) + } + }), + enum(..pins.map(p => p.at(0)), spacing: 0.7em), + )) + } +} + +/// A pane's box as it looks: blank in normal mode, `^` in insert, `$` raw +/// (a terminal's own input); `unsaved: true` fills it, as an unsaved +/// file's is. In HTML a span the stylesheet draws, its mode said in words. +#let mode-box(mark, unsaved: false) = { + let mode = if mark == "^" { "insert" } else if mark == "$" { "raw" } else { "normal" } + context if html-out() { + html.elem("span", attrs: (class: "mode-box" + if unsaved { " unsaved" } else { "" }, + role: "img", "aria-label": mode + " mode box" + if unsaved { ", unsaved" } else { "" }), mark) + } else { + box(width: 1.05em, height: 1.05em, baseline: 0.15em, radius: 1pt, + fill: if unsaved { palette.col-grip } else { palette.tag-bg }, + stroke: 0.7pt + palette.grip, + align(center + horizon, text(font: mono, size: 0.8em, weight: "bold", + fill: if unsaved { white } else { palette.ink }, mark))) + } +} + +/// A recording from docs/site/media/clips.toml, by name. On the site the +/// same video as the landing's (poster, autoplay muted loop, played while +/// in view) and its caption; in print its poster, small, and the caption. +/// `wide: true` lets it take the page's full width (a recording of many +/// narrow columns). +#let clip(name, wide: false) = { + let c = toml("../site/media/clips.toml").clip.find(c => c.name == name) + assert(c != none, message: "no clip named " + name + " in clips.toml") + let said = if c.caption.contains("#") { eval(c.caption, mode: "markup") } else { c.caption } + context if html-out() { + html.elem("figure", attrs: (class: "clip inline" + if wide { " wide" } else { "" }, id: "rec-" + c.name), { + html.elem("video", attrs: (poster: "media/" + c.name + ".png", autoplay: "", muted: "", loop: "", + playsinline: "", controls: ""), { + html.elem("source", attrs: (src: "media/" + c.name + ".webm", type: "video/webm")) + html.elem("source", attrs: (src: "media/" + c.name + ".mp4", type: "video/mp4")) + }) + html.elem("figcaption", said) + }) + } else { + figure(image("/docs/site/media/" + c.name + ".png", width: if wide { 11cm } else { 7cm }, alt: c.caption), + caption: text(size: 0.9em, said), numbering: none, kind: "clip", supplement: none) + } +} |
