| ofs | hex dump | ascii | 
|---|
| 0000 |  6e 6f 76 2d 32 30 32 35 30 36 31 35 2e 31 30 35    31 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | nov-20250615.1051/.............. | 
| 0020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0060 |  00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000755.0000000.0000000.0000 | 
| 0080 |  30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 31 36 30 36 00 20 35 00 00 00  | 0000000.00000000000.011606..5... | 
| 00a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 00e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0100 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0120 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 01e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0200 |  6e 6f 76 2d 32 30 32 35 30 36 31 35 2e 31 30 35    31 2f 6e 6f 76 2d 70 6b 67 2e 65 6c 00 00 00 00  | nov-20250615.1051/nov-pkg.el.... | 
| 0220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0260 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 0280 |  30 30 30 30 37 30 36 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 33 35 31 34 00 20 30 00 00 00  | 0000706.00000000000.013514..0... | 
| 02a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 02e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0300 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0320 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 03e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0400 |  3b 3b 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63    6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63  | ;;.-*-.no-byte-compile:.t;.lexic | 
| 0420 |  61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20    2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b  | al-binding:.nil.-*-.(define-pack | 
| 0440 |  61 67 65 20 22 6e 6f 76 22 20 22 32 30 32 35 30    36 31 35 2e 31 30 35 31 22 0a 20 20 22 46 65 61  | age."nov"."20250615.1051"..."Fea | 
| 0460 |  74 75 72 65 66 75 6c 20 45 50 55 42 20 72 65 61    64 65 72 20 6d 6f 64 65 2e 22 0a 20 20 27 28 28  | tureful.EPUB.reader.mode."...'(( | 
| 0480 |  65 73 78 6d 6c 20 22 30 2e 33 2e 36 22 29 0a 20    20 20 20 28 65 6d 61 63 73 20 22 32 35 2e 31 22  | esxml."0.3.6").....(emacs."25.1" | 
| 04a0 |  29 29 0a 20 20 3a 75 72 6c 20 22 68 74 74 70 73    3a 2f 2f 64 65 70 70 2e 62 72 61 75 73 65 2e 63  | ))...:url."https://depp.brause.c | 
| 04c0 |  63 2f 6e 6f 76 2e 65 6c 22 0a 20 20 3a 63 6f 6d    6d 69 74 20 22 39 33 33 38 31 36 63 31 39 30 36  | c/nov.el"...:commit."933816c1906 | 
| 04e0 |  33 33 66 61 31 66 32 66 30 36 36 37 62 61 31 30    35 64 31 33 31 31 35 37 32 62 33 63 36 22 0a 20  | 33fa1f2f0667ba105d1311572b3c6".. | 
| 0500 |  20 3a 72 65 76 64 65 73 63 20 22 39 33 33 38 31    36 63 31 39 30 36 33 22 0a 20 20 3a 6b 65 79 77  | .:revdesc."933816c19063"...:keyw | 
| 0520 |  6f 72 64 73 20 27 28 22 68 79 70 65 72 6d 65 64    69 61 22 20 22 6d 75 6c 74 69 6d 65 64 69 61 22  | ords.'("hypermedia"."multimedia" | 
| 0540 |  20 22 65 70 75 62 22 29 0a 20 20 3a 61 75 74 68    6f 72 73 20 27 28 28 22 56 61 73 69 6c 69 6a 20  | ."epub")...:authors.'(("Vasilij. | 
| 0560 |  53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 22 20 2e    20 22 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64  | Schneidermann"..."mail@vasilij.d | 
| 0580 |  65 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e    65 72 73 20 27 28 28 22 56 61 73 69 6c 69 6a 20  | e"))...:maintainers.'(("Vasilij. | 
| 05a0 |  53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 22 20 2e    20 22 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64  | Schneidermann"..."mail@vasilij.d | 
| 05c0 |  65 22 29 29 29 0a 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | e")))........................... | 
| 05e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0600 |  6e 6f 76 2d 32 30 32 35 30 36 31 35 2e 31 30 35    31 2f 6e 6f 76 2e 65 6c 00 00 00 00 00 00 00 00  | nov-20250615.1051/nov.el........ | 
| 0620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0660 |  00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30    30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30  | ....0000644.0000000.0000000.0000 | 
| 0680 |  30 31 32 32 31 30 37 00 30 30 30 30 30 30 30 30    30 30 30 00 30 31 32 37 33 35 00 20 30 00 00 00  | 0122107.00000000000.012735..0... | 
| 06a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 06c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 06e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0700 |  00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .ustar...root................... | 
| 0720 |  00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | .........root................... | 
| 0740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 07a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 07c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 07e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| 0800 |  3b 3b 3b 20 6e 6f 76 2e 65 6c 20 2d 2d 2d 20 46    65 61 74 75 72 65 66 75 6c 20 45 50 55 42 20 72  | ;;;.nov.el.---.Featureful.EPUB.r | 
| 0820 |  65 61 64 65 72 20 6d 6f 64 65 20 2d 2a 2d 20 6c    65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 74  | eader.mode.-*-.lexical-binding:t | 
| 0840 |  20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67    68 74 20 28 43 29 20 32 30 31 37 20 56 61 73 69  | .-*-..;;.Copyright.(C).2017.Vasi | 
| 0860 |  6c 69 6a 20 53 63 68 6e 65 69 64 65 72 6d 61 6e    6e 20 3c 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e  | lij.Schneidermann.<mail@vasilij. | 
| 0880 |  64 65 3e 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20    56 61 73 69 6c 69 6a 20 53 63 68 6e 65 69 64 65  | de>..;;.Author:.Vasilij.Schneide | 
| 08a0 |  72 6d 61 6e 6e 20 3c 6d 61 69 6c 40 76 61 73 69    6c 69 6a 2e 64 65 3e 0a 3b 3b 20 55 52 4c 3a 20  | rmann.<mail@vasilij.de>.;;.URL:. | 
| 08c0 |  68 74 74 70 73 3a 2f 2f 64 65 70 70 2e 62 72 61    75 73 65 2e 63 63 2f 6e 6f 76 2e 65 6c 0a 3b 3b  | https://depp.brause.cc/nov.el.;; | 
| 08e0 |  20 50 61 63 6b 61 67 65 2d 56 65 72 73 69 6f 6e    3a 20 32 30 32 35 30 36 31 35 2e 31 30 35 31 0a  | .Package-Version:.20250615.1051. | 
| 0900 |  3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 76 69 73    69 6f 6e 3a 20 39 33 33 38 31 36 63 31 39 30 36  | ;;.Package-Revision:.933816c1906 | 
| 0920 |  33 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 71    75 69 72 65 73 3a 20 28 28 65 73 78 6d 6c 20 22  | 3.;;.Package-Requires:.((esxml." | 
| 0940 |  30 2e 33 2e 36 22 29 20 28 65 6d 61 63 73 20 22    32 35 2e 31 22 29 29 0a 3b 3b 20 4b 65 79 77 6f  | 0.3.6").(emacs."25.1")).;;.Keywo | 
| 0960 |  72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 2c    20 6d 75 6c 74 69 6d 65 64 69 61 2c 20 65 70 75  | rds:.hypermedia,.multimedia,.epu | 
| 0980 |  62 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20    69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47  | b..;;.This.file.is.NOT.part.of.G | 
| 09a0 |  4e 55 20 45 6d 61 63 73 2e 0a 0a 3b 3b 20 54 68    69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72  | NU.Emacs...;;.This.program.is.fr | 
| 09c0 |  65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75    20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74  | ee.software;.you.can.redistribut | 
| 09e0 |  65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69    66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74  | e.it.and/or.modify.;;.it.under.t | 
| 0a00 |  68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20    47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  | he.terms.of.the.GNU.General.Publ | 
| 0a20 |  69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75    62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68  | ic.License.as.published.by.;;.th | 
| 0a40 |  65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20    46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68  | e.Free.Software.Foundation,.eith | 
| 0a60 |  65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20    74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a  | er.version.3.of.the.License,.or. | 
| 0a80 |  3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69    6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65  | ;;.(at.your.option).any.later.ve | 
| 0aa0 |  72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20    70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72  | rsion...;;.This.program.is.distr | 
| 0ac0 |  69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f    70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20  | ibuted.in.the.hope.that.it.will. | 
| 0ae0 |  62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75    74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41  | be.useful,.;;.but.WITHOUT.ANY.WA | 
| 0b00 |  52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20    65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  | RRANTY;.without.even.the.implied | 
| 0b20 |  20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20    4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20  | .warranty.of.;;.MERCHANTABILITY. | 
| 0b40 |  6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41    20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50  | or.FITNESS.FOR.A.PARTICULAR.PURP | 
| 0b60 |  4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b    20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62  | OSE...See.the.;;.GNU.General.Pub | 
| 0b80 |  6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20    6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b  | lic.License.for.more.details...; | 
| 0ba0 |  3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76    65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70  | ;.You.should.have.received.a.cop | 
| 0bc0 |  79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e    65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65  | y.of.the.GNU.General.Public.Lice | 
| 0be0 |  6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74    68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20  | nse.;;.along.with.this.program.. | 
| 0c00 |  20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74    74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67  | .If.not,.see.<http://www.gnu.org | 
| 0c20 |  2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b    3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b  | /licenses/>...;;;.Commentary:..; | 
| 0c40 |  3b 20 6e 6f 76 2e 65 6c 20 70 72 6f 76 69 64 65    73 20 61 20 6d 61 6a 6f 72 20 6d 6f 64 65 20 66  | ;.nov.el.provides.a.major.mode.f | 
| 0c60 |  6f 72 20 72 65 61 64 69 6e 67 20 45 50 55 42 20    64 6f 63 75 6d 65 6e 74 73 2e 0a 3b 3b 0a 3b 3b  | or.reading.EPUB.documents..;;.;; | 
| 0c80 |  20 46 65 61 74 75 72 65 73 3a 0a 3b 3b 0a 3b 3b    20 2d 20 42 61 73 69 63 20 6e 61 76 69 67 61 74  | .Features:.;;.;;.-.Basic.navigat | 
| 0ca0 |  69 6f 6e 20 28 6a 75 6d 70 20 74 6f 20 54 4f 43    2c 20 70 72 65 76 69 6f 75 73 2f 6e 65 78 74 20  | ion.(jump.to.TOC,.previous/next. | 
| 0cc0 |  63 68 61 70 74 65 72 29 0a 3b 3b 20 2d 20 52 65    6d 65 6d 62 65 72 69 6e 67 20 61 6e 64 20 72 65  | chapter).;;.-.Remembering.and.re | 
| 0ce0 |  73 74 6f 72 69 6e 67 20 74 68 65 20 6c 61 73 74    20 72 65 61 64 20 70 6f 73 69 74 69 6f 6e 0a 3b  | storing.the.last.read.position.; | 
| 0d00 |  3b 20 2d 20 4a 75 6d 70 20 74 6f 20 6e 65 78 74    20 63 68 61 70 74 65 72 20 77 68 65 6e 20 73 63  | ;.-.Jump.to.next.chapter.when.sc | 
| 0d20 |  72 6f 6c 6c 69 6e 67 20 62 65 79 6f 6e 64 20 65    6e 64 0a 3b 3b 20 2d 20 53 74 6f 72 69 6e 67 20  | rolling.beyond.end.;;.-.Storing. | 
| 0d40 |  61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 4f 72    67 20 6c 69 6e 6b 73 20 74 6f 20 45 50 55 42 20  | and.following.Org.links.to.EPUB. | 
| 0d60 |  66 69 6c 65 73 0a 3b 3b 20 2d 20 52 65 6e 64 65    72 73 20 45 50 55 42 32 20 28 2e 6e 63 78 29 20  | files.;;.-.Renders.EPUB2.(.ncx). | 
| 0d80 |  61 6e 64 20 45 50 55 42 33 20 28 3c 6e 61 76 3e    29 20 54 4f 43 73 0a 3b 3b 20 2d 20 48 79 70 65  | and.EPUB3.(<nav>).TOCs.;;.-.Hype | 
| 0da0 |  72 6c 69 6e 6b 73 20 74 6f 20 69 6e 74 65 72 6e    61 6c 20 61 6e 64 20 65 78 74 65 72 6e 61 6c 20  | rlinks.to.internal.and.external. | 
| 0dc0 |  74 61 72 67 65 74 73 0a 3b 3b 20 2d 20 53 75 70    70 6f 72 74 73 20 74 65 78 74 75 61 6c 20 61 6e  | targets.;;.-.Supports.textual.an | 
| 0de0 |  64 20 69 6d 61 67 65 20 64 6f 63 75 6d 65 6e 74    73 0a 3b 3b 20 2d 20 49 6e 66 6f 2d 73 74 79 6c  | d.image.documents.;;.-.Info-styl | 
| 0e00 |  65 20 68 69 73 74 6f 72 79 20 6e 61 76 69 67 61    74 69 6f 6e 0a 3b 3b 20 2d 20 56 69 65 77 20 73  | e.history.navigation.;;.-.View.s | 
| 0e20 |  6f 75 72 63 65 20 6f 66 20 64 6f 63 75 6d 65 6e    74 20 66 69 6c 65 73 0a 3b 3b 20 2d 20 4d 65 74  | ource.of.document.files.;;.-.Met | 
| 0e40 |  61 64 61 74 61 20 64 69 73 70 6c 61 79 0a 3b 3b    20 2d 20 49 6d 61 67 65 20 72 65 73 63 61 6c 69  | adata.display.;;.-.Image.rescali | 
| 0e60 |  6e 67 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28    72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29  | ng..;;;.Code:..(require.'cl-lib) | 
| 0e80 |  0a 28 72 65 71 75 69 72 65 20 27 64 6f 6d 29 0a    28 72 65 71 75 69 72 65 20 27 65 73 78 6d 6c 2d  | .(require.'dom).(require.'esxml- | 
| 0ea0 |  71 75 65 72 79 29 0a 28 72 65 71 75 69 72 65 20    27 69 6d 61 67 65 29 0a 28 72 65 71 75 69 72 65  | query).(require.'image).(require | 
| 0ec0 |  20 27 73 65 71 29 0a 28 72 65 71 75 69 72 65 20    27 73 68 72 29 0a 28 72 65 71 75 69 72 65 20 27  | .'seq).(require.'shr).(require.' | 
| 0ee0 |  75 72 6c 2d 70 61 72 73 65 29 0a 28 72 65 71 75    69 72 65 20 27 75 72 6c 2d 75 74 69 6c 29 0a 0a  | url-parse).(require.'url-util).. | 
| 0f00 |  28 72 65 71 75 69 72 65 20 27 62 6f 6f 6b 6d 61    72 6b 29 0a 28 72 65 71 75 69 72 65 20 27 65 61  | (require.'bookmark).(require.'ea | 
| 0f20 |  73 79 6d 65 6e 75 29 0a 28 72 65 71 75 69 72 65    20 27 69 6d 65 6e 75 29 0a 28 72 65 71 75 69 72  | symenu).(require.'imenu).(requir | 
| 0f40 |  65 20 27 6f 72 67 29 0a 28 72 65 71 75 69 72 65    20 27 72 65 63 65 6e 74 66 29 0a 0a 28 77 68 65  | e.'org).(require.'recentf)..(whe | 
| 0f60 |  6e 20 28 6e 6f 74 20 28 66 62 6f 75 6e 64 70 20    27 6c 69 62 78 6d 6c 2d 70 61 72 73 65 2d 78 6d  | n.(not.(fboundp.'libxml-parse-xm | 
| 0f80 |  6c 2d 72 65 67 69 6f 6e 29 29 0a 20 20 28 6d 65    73 73 61 67 65 20 22 59 6f 75 72 20 45 6d 61 63  | l-region))...(message."Your.Emac | 
| 0fa0 |  73 20 77 61 73 6e 27 74 20 63 6f 6d 70 69 6c 65    64 20 77 69 74 68 20 6c 69 62 78 6d 6c 20 73 75  | s.wasn't.compiled.with.libxml.su | 
| 0fc0 |  70 70 6f 72 74 22 29 29 0a 0a 0c 0a 3b 3b 3b 20    45 50 55 42 20 70 72 65 70 61 72 61 74 69 6f 6e  | pport"))....;;;.EPUB.preparation | 
| 0fe0 |  0a 0a 28 64 65 66 67 72 6f 75 70 20 6e 6f 76 20    6e 69 6c 0a 20 20 22 45 50 55 42 20 72 65 61 64  | ..(defgroup.nov.nil..."EPUB.read | 
| 1000 |  65 72 20 6d 6f 64 65 22 0a 20 20 3a 67 72 6f 75    70 20 27 6d 75 6c 74 69 6d 65 64 69 61 29 0a 0a  | er.mode"...:group.'multimedia).. | 
| 1020 |  28 64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 75    6e 7a 69 70 2d 70 72 6f 67 72 61 6d 20 28 65 78  | (defcustom.nov-unzip-program.(ex | 
| 1040 |  65 63 75 74 61 62 6c 65 2d 66 69 6e 64 20 22 75    6e 7a 69 70 22 29 0a 20 20 22 50 61 74 68 20 74  | ecutable-find."unzip")..."Path.t | 
| 1060 |  6f 20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20    65 78 65 63 75 74 61 62 6c 65 2e 22 0a 20 20 3a  | o.decompression.executable."...: | 
| 1080 |  74 79 70 65 20 27 28 66 69 6c 65 20 3a 6d 75 73    74 2d 6d 61 74 63 68 20 74 29 0a 20 20 3a 67 72  | type.'(file.:must-match.t)...:gr | 
| 10a0 |  6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63    75 73 74 6f 6d 20 6e 6f 76 2d 75 6e 7a 69 70 2d  | oup.'nov)..(defcustom.nov-unzip- | 
| 10c0 |  61 72 67 73 20 27 28 22 2d 6f 64 22 20 64 69 72    65 63 74 6f 72 79 20 66 69 6c 65 6e 61 6d 65 29  | args.'("-od".directory.filename) | 
| 10e0 |  0a 20 20 22 41 72 67 75 6d 65 6e 74 73 20 74 6f    20 64 65 63 6f 6d 70 72 65 73 73 69 6f 6e 20 65  | ..."Arguments.to.decompression.e | 
| 1100 |  78 65 63 75 74 61 62 6c 65 2e 0a 54 68 69 73 20    76 61 72 69 61 62 6c 65 20 65 78 70 65 63 74 73  | xecutable..This.variable.expects | 
| 1120 |  20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e    67 73 2c 20 65 78 63 65 70 74 20 66 6f 72 20 60  | .a.list.of.strings,.except.for.` | 
| 1140 |  64 69 72 65 63 74 6f 72 79 27 0a 61 6e 64 20 60    66 69 6c 65 6e 61 6d 65 27 20 73 79 6d 62 6f 6c  | directory'.and.`filename'.symbol | 
| 1160 |  73 2c 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65    20 72 65 70 6c 61 63 65 64 20 61 63 63 6f 72 64  | s,.which.will.be.replaced.accord | 
| 1180 |  69 6e 67 6c 79 20 77 68 65 6e 0a 6f 70 65 6e 69    6e 67 20 61 6e 20 45 50 55 42 20 66 69 6c 65 2e  | ingly.when.opening.an.EPUB.file. | 
| 11a0 |  22 0a 20 20 3a 74 79 70 65 20 27 28 72 65 70 65    61 74 20 28 63 68 6f 69 63 65 20 28 73 74 72 69  | "...:type.'(repeat.(choice.(stri | 
| 11c0 |  6e 67 20 3a 74 61 67 20 22 41 72 67 75 6d 65 6e    74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ng.:tag."Argument")............. | 
| 11e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f    6e 73 74 20 3a 74 61 67 20 22 44 69 72 65 63 74  | .............(const.:tag."Direct | 
| 1200 |  6f 72 79 22 20 64 69 72 65 63 74 6f 72 79 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ory".directory)................. | 
| 1220 |  20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20    3a 74 61 67 20 22 46 69 6c 65 6e 61 6d 65 22 20  | .........(const.:tag."Filename". | 
| 1240 |  66 69 6c 65 6e 61 6d 65 29 29 29 0a 20 20 3a 67    72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66  | filename)))...:group.'nov)..(def | 
| 1260 |  63 75 73 74 6f 6d 20 6e 6f 76 2d 76 61 72 69 61    62 6c 65 2d 70 69 74 63 68 20 74 0a 20 20 22 4e  | custom.nov-variable-pitch.t..."N | 
| 1280 |  6f 6e 2d 6e 69 6c 20 69 66 20 61 20 76 61 72 69    61 62 6c 65 20 70 69 74 63 68 20 66 61 63 65 20  | on-nil.if.a.variable.pitch.face. | 
| 12a0 |  73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 2e 0a    4f 74 68 65 72 77 69 73 65 20 74 68 65 20 64 65  | should.be.used..Otherwise.the.de | 
| 12c0 |  66 61 75 6c 74 20 66 61 63 65 20 69 73 20 75 73    65 64 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f  | fault.face.is.used."...:type.'bo | 
| 12e0 |  6f 6c 65 61 6e 0a 20 20 3a 67 72 6f 75 70 20 27    6e 6f 76 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d  | olean...:group.'nov)..(defcustom | 
| 1300 |  20 6e 6f 76 2d 74 65 78 74 2d 77 69 64 74 68 20    6e 69 6c 0a 20 20 22 57 69 64 74 68 20 66 69 6c  | .nov-text-width.nil..."Width.fil | 
| 1320 |  6c 65 64 20 74 65 78 74 20 73 68 61 6c 6c 20 6f    63 63 75 70 79 2e 0a 41 6e 20 69 6e 74 65 67 65  | led.text.shall.occupy..An.intege | 
| 1340 |  72 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64    20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  | r.is.interpreted.as.the.number.o | 
| 1360 |  66 20 63 6f 6c 75 6d 6e 73 2e 20 20 49 66 20 6e    69 6c 2c 20 75 73 65 0a 74 68 65 20 66 75 6c 6c  | f.columns...If.nil,.use.the.full | 
| 1380 |  20 77 69 6e 64 6f 77 27 73 20 77 69 64 74 68 2e    20 20 49 66 20 74 2c 20 64 69 73 61 62 6c 65 20  | .window's.width...If.t,.disable. | 
| 13a0 |  66 69 6c 6c 69 6e 67 20 63 6f 6d 70 6c 65 74 65    6c 79 2e 20 20 4e 6f 74 65 0a 74 68 61 74 20 74  | filling.completely...Note.that.t | 
| 13c0 |  68 69 73 20 76 61 72 69 61 62 6c 65 20 6f 6e 6c    79 20 68 61 73 20 61 6e 20 65 66 66 65 63 74 20  | his.variable.only.has.an.effect. | 
| 13e0 |  69 6e 20 45 6d 61 63 73 20 32 35 2e 31 20 6f 72    20 67 72 65 61 74 65 72 2e 22 0a 20 20 3a 74 79  | in.Emacs.25.1.or.greater."...:ty | 
| 1400 |  70 65 20 27 28 63 68 6f 69 63 65 20 28 69 6e 74    65 67 65 72 20 3a 74 61 67 20 22 46 69 78 65 64  | pe.'(choice.(integer.:tag."Fixed | 
| 1420 |  20 77 69 64 74 68 20 69 6e 20 63 68 61 72 61 63    74 65 72 73 22 29 0a 20 20 20 20 20 20 20 20 20  | .width.in.characters").......... | 
| 1440 |  20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 20    20 3a 74 61 67 20 22 55 73 65 20 74 68 65 20 77  | ........(const...:tag."Use.the.w | 
| 1460 |  69 64 74 68 20 6f 66 20 74 68 65 20 77 69 6e 64    6f 77 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20  | idth.of.the.window".nil)........ | 
| 1480 |  20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74    20 20 20 3a 74 61 67 20 22 44 69 73 61 62 6c 65  | ..........(const...:tag."Disable | 
| 14a0 |  20 66 69 6c 6c 69 6e 67 22 20 74 29 29 0a 20 20    3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64  | .filling".t))...:group.'nov)..(d | 
| 14c0 |  65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 72 65 6e    64 65 72 2d 68 74 6d 6c 2d 66 75 6e 63 74 69 6f  | efcustom.nov-render-html-functio | 
| 14e0 |  6e 20 27 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74    6d 6c 0a 20 20 22 46 75 6e 63 74 69 6f 6e 20 75  | n.'nov-render-html..."Function.u | 
| 1500 |  73 65 64 20 74 6f 20 72 65 6e 64 65 72 20 48 54    4d 4c 2e 0a 49 74 27 73 20 63 61 6c 6c 65 64 20  | sed.to.render.HTML..It's.called. | 
| 1520 |  77 69 74 68 6f 75 74 20 61 72 67 75 6d 65 6e 74    73 20 77 69 74 68 20 61 20 62 75 66 66 65 72 20  | without.arguments.with.a.buffer. | 
| 1540 |  63 6f 6e 74 61 69 6e 69 6e 67 20 48 54 4d 4c 20    61 6e 64 0a 73 68 6f 75 6c 64 20 63 68 61 6e 67  | containing.HTML.and.should.chang | 
| 1560 |  65 20 69 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20    74 68 65 20 72 65 6e 64 65 72 65 64 20 76 65 72  | e.it.to.contain.the.rendered.ver | 
| 1580 |  73 69 6f 6e 20 6f 66 20 69 74 2e 22 0a 20 20 3a    74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e 0a 20  | sion.of.it."...:type.'function.. | 
| 15a0 |  20 3a 67 72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28    64 65 66 63 75 73 74 6f 6d 20 6e 6f 76 2d 70 72  | .:group.'nov)..(defcustom.nov-pr | 
| 15c0 |  65 2d 68 74 6d 6c 2d 72 65 6e 64 65 72 2d 68 6f    6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72  | e-html-render-hook.nil..."Hook.r | 
| 15e0 |  75 6e 20 62 65 66 6f 72 65 20 60 6e 6f 76 2d 72    65 6e 64 65 72 2d 68 74 6d 6c 27 2e 22 0a 20 20  | un.before.`nov-render-html'."... | 
| 1600 |  3a 74 79 70 65 20 27 68 6f 6f 6b 0a 20 20 3a 67    72 6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66  | :type.'hook...:group.'nov)..(def | 
| 1620 |  63 75 73 74 6f 6d 20 6e 6f 76 2d 70 6f 73 74 2d    68 74 6d 6c 2d 72 65 6e 64 65 72 2d 68 6f 6f 6b  | custom.nov-post-html-render-hook | 
| 1640 |  20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e    20 61 66 74 65 72 20 60 6e 6f 76 2d 72 65 6e 64  | .nil..."Hook.run.after.`nov-rend | 
| 1660 |  65 72 2d 68 74 6d 6c 27 2e 22 0a 20 20 3a 74 79    70 65 20 27 68 6f 6f 6b 0a 20 20 3a 67 72 6f 75  | er-html'."...:type.'hook...:grou | 
| 1680 |  70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63 75 73    74 6f 6d 20 6e 6f 76 2d 73 61 76 65 2d 70 6c 61  | p.'nov)..(defcustom.nov-save-pla | 
| 16a0 |  63 65 2d 66 69 6c 65 20 28 6c 6f 63 61 74 65 2d    75 73 65 72 2d 65 6d 61 63 73 2d 66 69 6c 65 20  | ce-file.(locate-user-emacs-file. | 
| 16c0 |  22 6e 6f 76 2d 70 6c 61 63 65 73 22 29 0a 20 20    22 46 69 6c 65 20 6e 61 6d 65 20 77 68 65 72 65  | "nov-places")..."File.name.where | 
| 16e0 |  20 6c 61 73 74 20 72 65 61 64 69 6e 67 20 70 6c    61 63 65 73 20 61 72 65 20 73 61 76 65 64 20 74  | .last.reading.places.are.saved.t | 
| 1700 |  6f 20 61 6e 64 20 72 65 73 74 6f 72 65 64 20 66    72 6f 6d 2e 0a 49 66 20 73 65 74 20 74 6f 20 60  | o.and.restored.from..If.set.to.` | 
| 1720 |  6e 69 6c 27 2c 20 6e 6f 20 73 61 76 69 6e 67 20    61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 69 73  | nil',.no.saving.and.restoring.is | 
| 1740 |  20 70 65 72 66 6f 72 6d 65 64 2e 22 0a 20 20 3a    74 79 70 65 20 27 28 63 68 6f 69 63 65 20 28 66  | .performed."...:type.'(choice.(f | 
| 1760 |  69 6c 65 20 20 3a 74 61 67 20 22 46 69 6c 65 20    6e 61 6d 65 22 29 0a 20 20 20 20 20 20 20 20 20  | ile..:tag."File.name").......... | 
| 1780 |  20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a    74 61 67 20 22 44 6f 6e 27 74 20 73 61 76 65 20  | ........(const.:tag."Don't.save. | 
| 17a0 |  6c 61 73 74 20 72 65 61 64 69 6e 67 20 70 6c 61    63 65 73 22 20 6e 69 6c 29 29 0a 20 20 3a 67 72  | last.reading.places".nil))...:gr | 
| 17c0 |  6f 75 70 20 27 6e 6f 76 29 0a 0a 28 64 65 66 63    75 73 74 6f 6d 20 6e 6f 76 2d 68 65 61 64 65 72  | oup.'nov)..(defcustom.nov-header | 
| 17e0 |  2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 20 22 25 74    3a 20 25 63 22 0a 20 20 22 48 65 61 64 65 72 20  | -line-format."%t:.%c"..."Header. | 
| 1800 |  6c 69 6e 65 20 66 6f 72 6d 61 74 2e 0a 2d 20 25    74 20 69 73 20 72 65 70 6c 61 63 65 64 20 62 79  | line.format..-.%t.is.replaced.by | 
| 1820 |  20 74 68 65 20 74 69 74 6c 65 2e 0a 2d 20 25 63    20 69 73 20 72 65 70 6c 61 63 65 64 20 62 79 20  | .the.title..-.%c.is.replaced.by. | 
| 1840 |  74 68 65 20 63 68 61 70 74 65 72 20 74 69 74 6c    65 2e 22 0a 20 20 3a 74 79 70 65 20 27 73 74 72  | the.chapter.title."...:type.'str | 
| 1860 |  69 6e 67 0a 20 20 3a 67 72 6f 75 70 20 27 6e 6f    76 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61  | ing...:group.'nov)..(defvar-loca | 
| 1880 |  6c 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 20    6e 69 6c 0a 20 20 22 50 61 74 68 20 74 6f 20 74  | l.nov-file-name.nil..."Path.to.t | 
| 18a0 |  68 65 20 45 50 55 42 20 66 69 6c 65 20 62 61 63    6b 69 6e 67 20 74 68 69 73 20 62 75 66 66 65 72  | he.EPUB.file.backing.this.buffer | 
| 18c0 |  2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63    61 6c 20 6e 6f 76 2d 69 6e 69 74 69 61 6c 69 7a  | .")..(defvar-local.nov-initializ | 
| 18e0 |  65 2d 77 6f 72 6b 2d 64 69 72 2d 70 20 74 0a 20    20 22 53 65 74 20 74 6f 20 6e 69 6c 20 69 66 20  | e-work-dir-p.t..."Set.to.nil.if. | 
| 1900 |  6e 6f 20 77 6f 72 6b 69 6e 67 20 64 69 72 65 63    74 6f 72 79 20 73 68 6f 75 6c 64 20 62 65 20 69  | no.working.directory.should.be.i | 
| 1920 |  6e 69 74 69 61 6c 69 7a 65 64 2e 22 29 0a 28 70    75 74 20 27 6e 6f 76 2d 69 6e 69 74 69 61 6c 69  | nitialized.").(put.'nov-initiali | 
| 1940 |  7a 65 2d 77 6f 72 6b 2d 64 69 72 2d 70 20 27 70    65 72 6d 61 6e 65 6e 74 2d 6c 6f 63 61 6c 20 74  | ze-work-dir-p.'permanent-local.t | 
| 1960 |  29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c    20 6e 6f 76 2d 72 65 6d 6f 76 65 2d 77 6f 72 6b  | )..(defvar-local.nov-remove-work | 
| 1980 |  2d 64 69 72 2d 6f 6e 2d 65 78 69 74 2d 70 20 74    0a 20 20 22 53 65 74 20 74 6f 20 6e 69 6c 20 69  | -dir-on-exit-p.t..."Set.to.nil.i | 
| 19a0 |  66 20 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74    6f 72 79 20 73 68 6f 75 6c 64 20 62 65 20 70 72  | f.working.directory.should.be.pr | 
| 19c0 |  65 73 65 72 76 65 64 20 61 66 74 65 72 20 65 78    69 74 2e 22 29 0a 28 70 75 74 20 27 6e 6f 76 2d  | eserved.after.exit.").(put.'nov- | 
| 19e0 |  72 65 6d 6f 76 65 2d 77 6f 72 6b 2d 64 69 72 2d    6f 6e 2d 65 78 69 74 2d 70 20 27 70 65 72 6d 61  | remove-work-dir-on-exit-p.'perma | 
| 1a00 |  6e 65 6e 74 2d 6c 6f 63 61 6c 20 74 29 0a 0a 28    64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76  | nent-local.t)..(defvar-local.nov | 
| 1a20 |  2d 77 6f 72 6b 2d 64 69 72 20 6e 69 6c 0a 20 20    22 44 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61  | -work-dir.nil..."Directory.conta | 
| 1a40 |  69 6e 69 6e 67 20 74 68 65 20 62 75 66 66 65 72    27 73 20 45 50 55 42 20 66 69 6c 65 73 2e 22 29  | ining.the.buffer's.EPUB.files.") | 
| 1a60 |  0a 28 70 75 74 20 27 6e 6f 76 2d 77 6f 72 6b 2d    64 69 72 20 27 70 65 72 6d 61 6e 65 6e 74 2d 6c  | .(put.'nov-work-dir.'permanent-l | 
| 1a80 |  6f 63 61 6c 20 74 29 0a 0a 28 64 65 66 76 61 72    2d 6c 6f 63 61 6c 20 6e 6f 76 2d 63 6f 6e 74 65  | ocal.t)..(defvar-local.nov-conte | 
| 1aa0 |  6e 74 2d 66 69 6c 65 20 6e 69 6c 0a 20 20 22 50    61 74 68 20 74 6f 20 74 68 65 20 45 50 55 42 20  | nt-file.nil..."Path.to.the.EPUB. | 
| 1ac0 |  62 75 66 66 65 72 27 73 20 2e 6f 70 66 20 66 69    6c 65 2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c  | buffer's..opf.file.")..(defvar-l | 
| 1ae0 |  6f 63 61 6c 20 6e 6f 76 2d 65 70 75 62 2d 76 65    72 73 69 6f 6e 20 6e 69 6c 0a 20 20 22 56 65 72  | ocal.nov-epub-version.nil..."Ver | 
| 1b00 |  73 69 6f 6e 20 73 74 72 69 6e 67 20 6f 66 20 74    68 65 20 45 50 55 42 20 62 75 66 66 65 72 2e 22  | sion.string.of.the.EPUB.buffer." | 
| 1b20 |  29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c    20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 20 6e 69  | )..(defvar-local.nov-metadata.ni | 
| 1b40 |  6c 0a 20 20 22 4d 65 74 61 64 61 74 61 20 6f 66    20 74 68 65 20 45 50 55 42 20 62 75 66 66 65 72  | l..."Metadata.of.the.EPUB.buffer | 
| 1b60 |  2e 22 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63    61 6c 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73  | .")..(defvar-local.nov-documents | 
| 1b80 |  20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 66 6f    72 20 74 68 65 20 45 50 55 42 20 62 75 66 66 65  | .nil..."Alist.for.the.EPUB.buffe | 
| 1ba0 |  72 27 73 20 64 6f 63 75 6d 65 6e 74 73 2e 0a 45    61 63 68 20 61 6c 69 73 74 20 69 74 65 6d 20 63  | r's.documents..Each.alist.item.c | 
| 1bc0 |  6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 69    64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 66 75  | onsists.of.the.identifier.and.fu | 
| 1be0 |  6c 6c 20 70 61 74 68 2e 22 29 0a 0a 28 64 65 66    76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 64 6f  | ll.path.")..(defvar-local.nov-do | 
| 1c00 |  63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 30 0a    20 20 22 49 6e 64 65 78 20 6f 66 20 74 68 65 20  | cuments-index.0..."Index.of.the. | 
| 1c20 |  63 75 72 72 65 6e 74 6c 79 20 72 65 6e 64 65 72    65 64 20 64 6f 63 75 6d 65 6e 74 20 69 6e 20 74  | currently.rendered.document.in.t | 
| 1c40 |  68 65 20 45 50 55 42 20 62 75 66 66 65 72 2e 22    29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c  | he.EPUB.buffer.")..(defvar-local | 
| 1c60 |  20 6e 6f 76 2d 74 6f 63 2d 69 64 20 6e 69 6c 0a    20 20 22 54 4f 43 20 69 64 65 6e 74 69 66 69 65  | .nov-toc-id.nil..."TOC.identifie | 
| 1c80 |  72 20 6f 66 20 74 68 65 20 45 50 55 42 20 62 75    66 66 65 72 2e 22 29 0a 0a 28 64 65 66 76 61 72  | r.of.the.EPUB.buffer.")..(defvar | 
| 1ca0 |  2d 6c 6f 63 61 6c 20 6e 6f 76 2d 68 69 73 74 6f    72 79 20 6e 69 6c 0a 20 20 22 53 74 61 63 6b 20  | -local.nov-history.nil..."Stack. | 
| 1cc0 |  6f 66 20 64 6f 63 75 6d 65 6e 74 73 20 75 73 65    72 20 68 61 73 20 76 69 73 69 74 65 64 2e 0a 45  | of.documents.user.has.visited..E | 
| 1ce0 |  61 63 68 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74    68 65 20 73 74 61 63 6b 20 69 73 20 61 20 6c 69  | ach.element.of.the.stack.is.a.li | 
| 1d00 |  73 74 20 28 4e 4f 44 45 49 4e 44 45 58 20 42 55    46 46 45 52 50 4f 53 29 2e 22 29 0a 0a 28 64 65  | st.(NODEINDEX.BUFFERPOS).")..(de | 
| 1d20 |  66 76 61 72 2d 6c 6f 63 61 6c 20 6e 6f 76 2d 68    69 73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 6e  | fvar-local.nov-history-forward.n | 
| 1d40 |  69 6c 0a 20 20 22 53 74 61 63 6b 20 6f 66 20 64    6f 63 75 6d 65 6e 74 73 20 75 73 65 72 20 68 61  | il..."Stack.of.documents.user.ha | 
| 1d60 |  73 20 76 69 73 69 74 65 64 20 77 69 74 68 20 60    6e 6f 76 2d 68 69 73 74 6f 72 79 2d 62 61 63 6b  | s.visited.with.`nov-history-back | 
| 1d80 |  27 20 63 6f 6d 6d 61 6e 64 2e 0a 45 61 63 68 20    65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 73  | '.command..Each.element.of.the.s | 
| 1da0 |  74 61 63 6b 20 69 73 20 61 20 6c 69 73 74 20 28    4e 4f 44 45 49 4e 44 45 58 20 42 55 46 46 45 52  | tack.is.a.list.(NODEINDEX.BUFFER | 
| 1dc0 |  50 4f 53 29 2e 22 29 0a 0a 28 64 65 66 75 6e 20    6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 28 64  | POS).")..(defun.nov-make-path.(d | 
| 1de0 |  69 72 65 63 74 6f 72 79 20 66 69 6c 65 29 0a 20    20 22 43 72 65 61 74 65 20 61 20 70 61 74 68 20  | irectory.file)..."Create.a.path. | 
| 1e00 |  66 72 6f 6d 20 44 49 52 45 43 54 4f 52 59 20 61    6e 64 20 46 49 4c 45 2e 22 0a 20 20 28 63 6f 6e  | from.DIRECTORY.and.FILE."...(con | 
| 1e20 |  63 61 74 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 61    73 2d 64 69 72 65 63 74 6f 72 79 20 64 69 72 65  | cat.(file-name-as-directory.dire | 
| 1e40 |  63 74 6f 72 79 29 20 66 69 6c 65 29 29 0a 0a 28    64 65 66 75 6e 20 6e 6f 76 2d 64 69 72 65 63 74  | ctory).file))..(defun.nov-direct | 
| 1e60 |  6f 72 79 2d 66 69 6c 65 73 20 28 64 69 72 65 63    74 6f 72 79 29 0a 20 20 22 52 65 74 75 72 6e 73  | ory-files.(directory)..."Returns | 
| 1e80 |  20 61 20 6c 69 73 74 20 6f 66 20 66 69 6c 65 73    20 69 6e 20 44 49 52 45 43 54 4f 52 59 20 65 78  | .a.list.of.files.in.DIRECTORY.ex | 
| 1ea0 |  63 65 70 74 20 66 6f 72 20 2e 20 61 6e 64 20 2e    2e 22 0a 20 20 28 73 65 71 2d 72 65 6d 6f 76 65  | cept.for...and..."...(seq-remove | 
| 1ec0 |  20 28 6c 61 6d 62 64 61 20 28 66 69 6c 65 29 20    28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20  | .(lambda.(file).(string-match-p. | 
| 1ee0 |  22 2f 5c 5c 2e 5c 5c 28 3f 3a 5c 5c 2e 5c 5c 29    3f 5c 5c 27 22 20 66 69 6c 65 29 29 0a 20 20 20  | "/\\.\\(?:\\.\\)?\\'".file)).... | 
| 1f00 |  20 20 20 20 20 20 20 20 20 20 20 28 64 69 72 65    63 74 6f 72 79 2d 66 69 6c 65 73 20 64 69 72 65  | ...........(directory-files.dire | 
| 1f20 |  63 74 6f 72 79 20 74 29 29 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 63 6f 6e 74 61 69 6e 73 2d  | ctory.t)))..(defun.nov-contains- | 
| 1f40 |  6e 65 73 74 65 64 2d 64 69 72 65 63 74 6f 72 79    2d 70 20 28 64 69 72 65 63 74 6f 72 79 29 0a 20  | nested-directory-p.(directory).. | 
| 1f60 |  20 22 4e 6f 6e 2d 6e 69 6c 20 69 66 20 44 49 52    45 43 54 4f 52 59 20 63 6f 6e 74 61 69 6e 73 20  | ."Non-nil.if.DIRECTORY.contains. | 
| 1f80 |  65 78 61 63 74 6c 79 20 6f 6e 65 20 64 69 72 65    63 74 6f 72 79 2e 22 0a 20 20 28 6c 65 74 2a 20  | exactly.one.directory."...(let*. | 
| 1fa0 |  28 28 66 69 6c 65 73 20 28 6e 6f 76 2d 64 69 72    65 63 74 6f 72 79 2d 66 69 6c 65 73 20 64 69 72  | ((files.(nov-directory-files.dir | 
| 1fc0 |  65 63 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20    20 20 28 66 69 6c 65 20 28 63 61 72 20 66 69 6c  | ectory))..........(file.(car.fil | 
| 1fe0 |  65 73 29 29 29 0a 20 20 20 20 28 61 6e 64 20 28    3d 20 28 6c 65 6e 67 74 68 20 66 69 6c 65 73 29  | es))).....(and.(=.(length.files) | 
| 2000 |  20 31 29 0a 20 20 20 20 20 20 20 20 20 28 66 69    6c 65 2d 64 69 72 65 63 74 6f 72 79 2d 70 20 66  | .1)..........(file-directory-p.f | 
| 2020 |  69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 66 69    6c 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f  | ile)..........file)))..(defun.no | 
| 2040 |  76 2d 75 6e 6e 65 73 74 2d 64 69 72 65 63 74 6f    72 79 20 28 64 69 72 65 63 74 6f 72 79 20 63 68  | v-unnest-directory.(directory.ch | 
| 2060 |  69 6c 64 29 0a 20 20 22 4d 6f 76 65 20 63 6f 6e    74 65 6e 74 73 20 6f 66 20 43 48 49 4c 44 20 69  | ild)..."Move.contents.of.CHILD.i | 
| 2080 |  6e 74 6f 20 44 49 52 45 43 54 4f 52 59 2c 20 74    68 65 6e 20 64 65 6c 65 74 65 20 43 48 49 4c 44  | nto.DIRECTORY,.then.delete.CHILD | 
| 20a0 |  2e 22 0a 20 20 3b 3b 20 46 49 58 4d 45 3a 20 74    68 69 73 20 77 69 6c 6c 20 6d 6f 73 74 20 63 65  | ."...;;.FIXME:.this.will.most.ce | 
| 20c0 |  72 74 61 69 6e 6c 79 20 66 61 69 6c 20 66 6f 72    20 63 6f 6e 2f 63 6f 6e 0a 20 20 28 64 6f 6c 69  | rtainly.fail.for.con/con...(doli | 
| 20e0 |  73 74 20 28 69 74 65 6d 20 28 6e 6f 76 2d 64 69    72 65 63 74 6f 72 79 2d 66 69 6c 65 73 20 63 68  | st.(item.(nov-directory-files.ch | 
| 2100 |  69 6c 64 29 29 0a 20 20 20 20 28 72 65 6e 61 6d    65 2d 66 69 6c 65 20 69 74 65 6d 20 64 69 72 65  | ild)).....(rename-file.item.dire | 
| 2120 |  63 74 6f 72 79 29 29 0a 20 20 28 64 65 6c 65 74    65 2d 64 69 72 65 63 74 6f 72 79 20 63 68 69 6c  | ctory))...(delete-directory.chil | 
| 2140 |  64 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d    2d 66 69 78 2d 70 65 72 6d 69 73 73 69 6f 6e 73  | d))..(defun.nov--fix-permissions | 
| 2160 |  20 28 66 69 6c 65 2d 6f 72 2d 64 69 72 65 63 74    6f 72 79 20 6d 6f 64 65 29 0a 20 20 28 6c 65 74  | .(file-or-directory.mode)...(let | 
| 2180 |  2a 20 28 28 6d 6f 64 65 73 20 28 66 69 6c 65 2d    6d 6f 64 65 73 20 66 69 6c 65 2d 6f 72 2d 64 69  | *.((modes.(file-modes.file-or-di | 
| 21a0 |  72 65 63 74 6f 72 79 29 29 0a 20 20 20 20 20 20    20 20 20 28 66 69 78 65 64 2d 6d 6f 64 65 20 28  | rectory))..........(fixed-mode.( | 
| 21c0 |  66 69 6c 65 2d 6d 6f 64 65 73 2d 73 79 6d 62 6f    6c 69 63 2d 74 6f 2d 6e 75 6d 62 65 72 20 6d 6f  | file-modes-symbolic-to-number.mo | 
| 21e0 |  64 65 20 6d 6f 64 65 73 29 29 29 0a 20 20 20 20    28 73 65 74 2d 66 69 6c 65 2d 6d 6f 64 65 73 20  | de.modes))).....(set-file-modes. | 
| 2200 |  66 69 6c 65 2d 6f 72 2d 64 69 72 65 63 74 6f 72    79 20 66 69 78 65 64 2d 6d 6f 64 65 29 29 29 0a  | file-or-directory.fixed-mode))). | 
| 2220 |  0a 28 64 65 66 75 6e 20 6e 6f 76 2d 66 69 78 2d    70 65 72 6d 69 73 73 69 6f 6e 73 20 28 64 69 72  | .(defun.nov-fix-permissions.(dir | 
| 2240 |  65 63 74 6f 72 79 29 0a 20 20 22 49 74 65 72 61    74 65 20 72 65 63 75 72 73 69 76 65 6c 79 20 74  | ectory)..."Iterate.recursively.t | 
| 2260 |  68 72 6f 75 67 68 20 44 49 52 45 43 54 4f 52 59    20 74 6f 20 66 69 78 20 69 74 73 20 66 69 6c 65  | hrough.DIRECTORY.to.fix.its.file | 
| 2280 |  73 2e 22 0a 20 20 28 6e 6f 76 2d 2d 66 69 78 2d    70 65 72 6d 69 73 73 69 6f 6e 73 20 64 69 72 65  | s."...(nov--fix-permissions.dire | 
| 22a0 |  63 74 6f 72 79 20 22 2b 72 78 22 29 0a 20 20 28    64 6f 6c 69 73 74 20 28 66 69 6c 65 20 28 6e 6f  | ctory."+rx")...(dolist.(file.(no | 
| 22c0 |  76 2d 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65    73 20 64 69 72 65 63 74 6f 72 79 29 29 0a 20 20  | v-directory-files.directory))... | 
| 22e0 |  20 20 28 69 66 20 28 66 69 6c 65 2d 64 69 72 65    63 74 6f 72 79 2d 70 20 66 69 6c 65 29 0a 20 20  | ..(if.(file-directory-p.file)... | 
| 2300 |  20 20 20 20 20 20 28 6e 6f 76 2d 66 69 78 2d 70    65 72 6d 69 73 73 69 6f 6e 73 20 66 69 6c 65 29  | ......(nov-fix-permissions.file) | 
| 2320 |  0a 20 20 20 20 20 20 28 6e 6f 76 2d 2d 66 69 78    2d 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 69 6c  | .......(nov--fix-permissions.fil | 
| 2340 |  65 20 22 2b 72 22 29 29 29 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 75 6e 7a 69 70 2d 65 70 75  | e."+r"))))..(defun.nov-unzip-epu | 
| 2360 |  62 20 28 64 69 72 65 63 74 6f 72 79 20 66 69 6c    65 6e 61 6d 65 29 0a 20 20 22 45 78 74 72 61 63  | b.(directory.filename)..."Extrac | 
| 2380 |  74 20 46 49 4c 45 4e 41 4d 45 20 69 6e 74 6f 20    44 49 52 45 43 54 4f 52 59 2e 0a 55 6e 6e 65 63  | t.FILENAME.into.DIRECTORY..Unnec | 
| 23a0 |  65 73 73 61 72 79 20 6e 65 73 74 69 6e 67 20 69    73 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20 60  | essary.nesting.is.removed.with.` | 
| 23c0 |  6e 6f 76 2d 75 6e 6e 65 73 74 2d 64 69 72 65 63    74 6f 72 79 27 2e 22 0a 20 20 28 6c 65 74 2a 20  | nov-unnest-directory'."...(let*. | 
| 23e0 |  28 28 73 74 61 74 75 73 20 28 61 70 70 6c 79 20    23 27 63 61 6c 6c 2d 70 72 6f 63 65 73 73 20 6e  | ((status.(apply.#'call-process.n | 
| 2400 |  6f 76 2d 75 6e 7a 69 70 2d 70 72 6f 67 72 61 6d    20 6e 69 6c 20 22 2a 6e 6f 76 20 75 6e 7a 69 70  | ov-unzip-program.nil."*nov.unzip | 
| 2420 |  2a 22 20 74 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61  | *".t.........................(ma | 
| 2440 |  70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 61 72    67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | pcar.(lambda.(arg).............. | 
| 2460 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20  | .....................(cond...... | 
| 2480 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28  | ..............................(( | 
| 24a0 |  65 71 20 61 72 67 20 27 64 69 72 65 63 74 6f 72    79 29 20 64 69 72 65 63 74 6f 72 79 29 0a 20 20  | eq.arg.'directory).directory)... | 
| 24c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 24e0 |  20 28 28 65 71 20 61 72 67 20 27 66 69 6c 65 6e    61 6d 65 29 20 66 69 6c 65 6e 61 6d 65 29 0a 20  | .((eq.arg.'filename).filename).. | 
| 2500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 2520 |  20 20 28 74 20 61 72 67 29 29 29 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..(t.arg)))..................... | 
| 2540 |  20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 76 2d    75 6e 7a 69 70 2d 61 72 67 73 29 29 29 0a 20 20  | ............nov-unzip-args)))... | 
| 2560 |  20 20 20 20 20 20 20 63 68 69 6c 64 29 0a 20 20    20 20 28 77 68 69 6c 65 20 28 73 65 74 71 20 63  | .......child).....(while.(setq.c | 
| 2580 |  68 69 6c 64 20 28 6e 6f 76 2d 63 6f 6e 74 61 69    6e 73 2d 6e 65 73 74 65 64 2d 64 69 72 65 63 74  | hild.(nov-contains-nested-direct | 
| 25a0 |  6f 72 79 2d 70 20 64 69 72 65 63 74 6f 72 79 29    29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 75 6e 6e  | ory-p.directory)).......(nov-unn | 
| 25c0 |  65 73 74 2d 64 69 72 65 63 74 6f 72 79 20 64 69    72 65 63 74 6f 72 79 20 63 68 69 6c 64 29 29 0a  | est-directory.directory.child)). | 
| 25e0 |  20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 75 6e 7a    69 70 20 70 72 65 73 65 72 76 65 73 20 66 69 6c  | ....;;.HACK:.unzip.preserves.fil | 
| 2600 |  65 20 70 65 72 6d 69 73 73 69 6f 6e 73 2c 20 6e    6f 20 6d 61 74 74 65 72 20 68 6f 77 20 73 69 6c  | e.permissions,.no.matter.how.sil | 
| 2620 |  6c 79 20 74 68 65 79 0a 20 20 20 20 3b 3b 20 61    72 65 2c 20 73 6f 20 65 6e 73 75 72 65 20 66 69  | ly.they.....;;.are,.so.ensure.fi | 
| 2640 |  6c 65 73 20 61 6e 64 20 64 69 72 65 63 74 6f 72    69 65 73 20 61 72 65 20 72 65 61 64 61 62 6c 65  | les.and.directories.are.readable | 
| 2660 |  0a 20 20 20 20 28 6e 6f 76 2d 66 69 78 2d 70 65    72 6d 69 73 73 69 6f 6e 73 20 64 69 72 65 63 74  | .....(nov-fix-permissions.direct | 
| 2680 |  6f 72 79 29 0a 20 20 20 20 73 74 61 74 75 73 29    29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 77 61  | ory).....status))..(defun.nov-wa | 
| 26a0 |  72 6e 20 28 6d 65 73 73 61 67 65 20 26 6f 70 74    69 6f 6e 61 6c 20 6c 65 76 65 6c 29 0a 20 20 22  | rn.(message.&optional.level)..." | 
| 26c0 |  4c 69 6b 65 20 60 64 69 73 70 6c 61 79 2d 77 61    72 6e 69 6e 67 27 2c 20 62 75 74 20 66 6f 72 20  | Like.`display-warning',.but.for. | 
| 26e0 |  6e 6f 76 2d 73 70 65 63 69 66 69 63 20 77 61 72    6e 69 6e 67 73 2e 0a 44 69 73 70 6c 61 79 73 20  | nov-specific.warnings..Displays. | 
| 2700 |  4d 45 53 53 41 47 45 20 69 6e 20 61 20 77 61 72    6e 69 6e 67 73 20 62 75 66 66 65 72 2c 20 77 69  | MESSAGE.in.a.warnings.buffer,.wi | 
| 2720 |  74 68 20 4c 45 56 45 4c 20 61 73 20 73 65 76 65    72 69 74 79 2e 22 0a 20 20 28 64 69 73 70 6c 61  | th.LEVEL.as.severity."...(displa | 
| 2740 |  79 2d 77 61 72 6e 69 6e 67 20 27 6e 6f 76 20 6d    65 73 73 61 67 65 20 6c 65 76 65 6c 29 29 0a 0a  | y-warning.'nov.message.level)).. | 
| 2760 |  28 64 65 66 6d 61 63 72 6f 20 6e 6f 76 2d 69 67    6e 6f 72 65 2d 66 69 6c 65 2d 65 72 72 6f 72 73  | (defmacro.nov-ignore-file-errors | 
| 2780 |  20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20    22 4c 69 6b 65 20 60 69 67 6e 6f 72 65 2d 65 72  | .(&rest.body)..."Like.`ignore-er | 
| 27a0 |  72 6f 72 73 27 2c 20 62 75 74 20 66 6f 72 20 66    69 6c 65 20 65 72 72 6f 72 73 2e 22 0a 20 20 60  | rors',.but.for.file.errors."...` | 
| 27c0 |  28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20    6e 69 6c 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64  | (condition-case.nil.(progn.,@bod | 
| 27e0 |  79 29 20 28 66 69 6c 65 2d 65 72 72 6f 72 20 6e    69 6c 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f  | y).(file-error.nil)))..(defun.no | 
| 2800 |  76 2d 73 6c 75 72 70 20 28 66 69 6c 65 6e 61 6d    65 20 26 6f 70 74 69 6f 6e 61 6c 20 70 61 72 73  | v-slurp.(filename.&optional.pars | 
| 2820 |  65 2d 78 6d 6c 2d 70 29 0a 20 20 22 52 65 74 75    72 6e 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20  | e-xml-p)..."Return.the.contents. | 
| 2840 |  6f 66 20 46 49 4c 45 4e 41 4d 45 2e 0a 49 66 20    50 41 52 53 45 2d 58 4d 4c 2d 50 20 69 73 20 74  | of.FILENAME..If.PARSE-XML-P.is.t | 
| 2860 |  2c 20 72 65 74 75 72 6e 20 74 68 65 20 63 6f 6e    74 65 6e 74 73 20 61 73 20 70 61 72 73 65 64 20  | ,.return.the.contents.as.parsed. | 
| 2880 |  62 79 20 6c 69 62 78 6d 6c 2e 22 0a 20 20 28 77    69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a  | by.libxml."...(with-temp-buffer. | 
| 28a0 |  20 20 20 20 28 69 6e 73 65 72 74 2d 66 69 6c 65    2d 63 6f 6e 74 65 6e 74 73 20 66 69 6c 65 6e 61  | ....(insert-file-contents.filena | 
| 28c0 |  6d 65 29 0a 20 20 20 20 28 69 66 20 70 61 72 73    65 2d 78 6d 6c 2d 70 0a 20 20 20 20 20 20 20 20  | me).....(if.parse-xml-p......... | 
| 28e0 |  28 6c 69 62 78 6d 6c 2d 70 61 72 73 65 2d 78 6d    6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d  | (libxml-parse-xml-region.(point- | 
| 2900 |  6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29    29 0a 20 20 20 20 20 20 28 62 75 66 66 65 72 2d  | min).(point-max)).......(buffer- | 
| 2920 |  73 74 72 69 6e 67 29 29 29 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 6d 69 6d 65 74 79 70 65 2d  | string))))..(defun.nov-mimetype- | 
| 2940 |  76 61 6c 69 64 2d 70 20 28 64 69 72 65 63 74 6f    72 79 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20  | valid-p.(directory)..."Return.t. | 
| 2960 |  69 66 20 44 49 52 45 43 54 4f 52 59 20 63 6f 6e    74 61 69 6e 73 20 61 20 76 61 6c 69 64 20 45 50  | if.DIRECTORY.contains.a.valid.EP | 
| 2980 |  55 42 20 6d 69 6d 65 74 79 70 65 20 66 69 6c 65    2e 22 0a 20 20 28 6e 6f 76 2d 69 67 6e 6f 72 65  | UB.mimetype.file."...(nov-ignore | 
| 29a0 |  2d 66 69 6c 65 2d 65 72 72 6f 72 73 0a 20 20 20    20 28 6c 65 74 20 28 28 66 69 6c 65 6e 61 6d 65  | -file-errors.....(let.((filename | 
| 29c0 |  20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20    64 69 72 65 63 74 6f 72 79 20 22 6d 69 6d 65 74  | .(nov-make-path.directory."mimet | 
| 29e0 |  79 70 65 22 29 29 29 0a 20 20 20 20 20 20 28 65    71 75 61 6c 20 28 6e 6f 76 2d 73 6c 75 72 70 20  | ype"))).......(equal.(nov-slurp. | 
| 2a00 |  66 69 6c 65 6e 61 6d 65 29 20 22 61 70 70 6c 69    63 61 74 69 6f 6e 2f 65 70 75 62 2b 7a 69 70 22  | filename)."application/epub+zip" | 
| 2a20 |  29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76    2d 63 6f 6e 74 61 69 6e 65 72 2d 66 69 6c 65 6e  | ))))..(defun.nov-container-filen | 
| 2a40 |  61 6d 65 20 28 64 69 72 65 63 74 6f 72 79 29 0a    20 20 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f  | ame.(directory)..."Return.the.co | 
| 2a60 |  6e 74 61 69 6e 65 72 20 66 69 6c 65 6e 61 6d 65    20 66 6f 72 20 44 49 52 45 43 54 4f 52 59 2e 22  | ntainer.filename.for.DIRECTORY." | 
| 2a80 |  0a 20 20 28 6c 65 74 20 28 28 66 69 6c 65 6e 61    6d 65 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74  | ...(let.((filename.(nov-make-pat | 
| 2aa0 |  68 20 64 69 72 65 63 74 6f 72 79 20 22 4d 45 54    41 2d 49 4e 46 22 29 29 29 0a 20 20 20 20 28 6e  | h.directory."META-INF"))).....(n | 
| 2ac0 |  6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 66 69 6c    65 6e 61 6d 65 20 22 63 6f 6e 74 61 69 6e 65 72  | ov-make-path.filename."container | 
| 2ae0 |  2e 78 6d 6c 22 29 29 29 0a 0a 28 64 65 66 75 6e    20 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 63  | .xml")))..(defun.nov-container-c | 
| 2b00 |  6f 6e 74 65 6e 74 2d 66 69 6c 65 6e 61 6d 65 20    28 63 6f 6e 74 65 6e 74 29 0a 20 20 22 52 65 74  | ontent-filename.(content)..."Ret | 
| 2b20 |  75 72 6e 20 74 68 65 20 63 6f 6e 74 65 6e 74 20    66 69 6c 65 6e 61 6d 65 20 66 6f 72 20 43 4f 4e  | urn.the.content.filename.for.CON | 
| 2b40 |  54 45 4e 54 2e 22 0a 20 20 28 6c 65 74 2a 20 28    28 71 75 65 72 79 20 22 63 6f 6e 74 61 69 6e 65  | TENT."...(let*.((query."containe | 
| 2b60 |  72 3e 72 6f 6f 74 66 69 6c 65 73 3e 72 6f 6f 74    66 69 6c 65 5b 6d 65 64 69 61 2d 74 79 70 65 3d  | r>rootfiles>rootfile[media-type= | 
| 2b80 |  27 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 65 62    70 73 2d 70 61 63 6b 61 67 65 2b 78 6d 6c 27 5d  | 'application/oebps-package+xml'] | 
| 2ba0 |  22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6f 64    65 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 20 71  | ")..........(node.(esxml-query.q | 
| 2bc0 |  75 65 72 79 20 63 6f 6e 74 65 6e 74 29 29 29 0a    20 20 20 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f  | uery.content))).....(dom-attr.no | 
| 2be0 |  64 65 20 27 66 75 6c 6c 2d 70 61 74 68 29 29 29    0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e  | de.'full-path)))..(defun.nov-con | 
| 2c00 |  74 61 69 6e 65 72 2d 76 61 6c 69 64 2d 70 20 28    64 69 72 65 63 74 6f 72 79 29 0a 20 20 22 52 65  | tainer-valid-p.(directory)..."Re | 
| 2c20 |  74 75 72 6e 20 74 20 69 66 20 44 49 52 45 43 54    4f 52 59 20 68 6f 6c 64 73 20 61 20 76 61 6c 69  | turn.t.if.DIRECTORY.holds.a.vali | 
| 2c40 |  64 20 45 50 55 42 20 63 6f 6e 74 61 69 6e 65 72    2e 22 0a 20 20 28 6c 65 74 20 28 28 66 69 6c 65  | d.EPUB.container."...(let.((file | 
| 2c60 |  6e 61 6d 65 20 28 6e 6f 76 2d 63 6f 6e 74 61 69    6e 65 72 2d 66 69 6c 65 6e 61 6d 65 20 64 69 72  | name.(nov-container-filename.dir | 
| 2c80 |  65 63 74 6f 72 79 29 29 29 0a 20 20 20 20 28 77    68 65 6e 20 28 61 6e 64 20 66 69 6c 65 6e 61 6d  | ectory))).....(when.(and.filenam | 
| 2ca0 |  65 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70    20 66 69 6c 65 6e 61 6d 65 29 29 0a 20 20 20 20  | e.(file-exists-p.filename))..... | 
| 2cc0 |  20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e    74 20 28 6e 6f 76 2d 73 6c 75 72 70 20 66 69 6c  | ..(let*.((content.(nov-slurp.fil | 
| 2ce0 |  65 6e 61 6d 65 20 74 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 2d  | ename.t))..............(content- | 
| 2d00 |  66 69 6c 65 20 28 6e 6f 76 2d 63 6f 6e 74 61 69    6e 65 72 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c 65  | file.(nov-container-content-file | 
| 2d20 |  6e 61 6d 65 20 63 6f 6e 74 65 6e 74 29 29 29 0a    20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61  | name.content))).........(when.(a | 
| 2d40 |  6e 64 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65    6e 74 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20  | nd.content.content-file)........ | 
| 2d60 |  20 20 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d    70 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68  | ...(file-exists-p.(nov-make-path | 
| 2d80 |  20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65    6e 74 2d 66 69 6c 65 29 29 29 29 29 29 29 0a 0a  | .directory.content-file))))))).. | 
| 2da0 |  28 64 65 66 75 6e 20 6e 6f 76 2d 65 70 75 62 2d    76 61 6c 69 64 2d 70 20 28 64 69 72 65 63 74 6f  | (defun.nov-epub-valid-p.(directo | 
| 2dc0 |  72 79 29 0a 20 20 22 52 65 74 75 72 6e 20 74 20    69 66 20 44 49 52 45 43 54 4f 52 59 20 6d 61 6b  | ry)..."Return.t.if.DIRECTORY.mak | 
| 2de0 |  65 73 20 75 70 20 61 20 76 61 6c 69 64 20 45 50    55 42 20 64 6f 63 75 6d 65 6e 74 2e 22 0a 20 20  | es.up.a.valid.EPUB.document."... | 
| 2e00 |  28 77 68 65 6e 20 28 6e 6f 74 20 28 6e 6f 76 2d    6d 69 6d 65 74 79 70 65 2d 76 61 6c 69 64 2d 70  | (when.(not.(nov-mimetype-valid-p | 
| 2e20 |  20 64 69 72 65 63 74 6f 72 79 29 29 0a 20 20 20    20 28 6d 65 73 73 61 67 65 20 22 49 6e 76 61 6c  | .directory)).....(message."Inval | 
| 2e40 |  69 64 20 6d 69 6d 65 74 79 70 65 22 29 29 0a 20    20 28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d  | id.mimetype"))...(nov-container- | 
| 2e60 |  76 61 6c 69 64 2d 70 20 64 69 72 65 63 74 6f 72    79 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d  | valid-p.directory))..(defun.nov- | 
| 2e80 |  75 72 6c 64 65 63 6f 64 65 20 28 73 74 72 69 6e    67 29 0a 20 20 22 52 65 74 75 72 6e 20 75 72 6c  | urldecode.(string)..."Return.url | 
| 2ea0 |  64 65 63 6f 64 65 64 20 76 65 72 73 69 6f 6e 20    6f 66 20 53 54 52 49 4e 47 20 6f 72 20 6e 69 6c  | decoded.version.of.STRING.or.nil | 
| 2ec0 |  2e 22 0a 20 20 28 77 68 65 6e 20 73 74 72 69 6e    67 0a 20 20 20 20 28 75 72 6c 2d 75 6e 68 65 78  | ."...(when.string.....(url-unhex | 
| 2ee0 |  2d 73 74 72 69 6e 67 20 73 74 72 69 6e 67 29 29    29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f  | -string.string)))..(defun.nov-co | 
| 2f00 |  6e 74 65 6e 74 2d 76 65 72 73 69 6f 6e 20 28 63    6f 6e 74 65 6e 74 29 0a 20 20 22 52 65 74 75 72  | ntent-version.(content)..."Retur | 
| 2f20 |  6e 20 74 68 65 20 45 50 55 42 20 76 65 72 73 69    6f 6e 20 66 6f 72 20 43 4f 4e 54 45 4e 54 2e 22  | n.the.EPUB.version.for.CONTENT." | 
| 2f40 |  0a 20 20 28 6c 65 74 2a 20 28 28 6e 6f 64 65 20    28 65 73 78 6d 6c 2d 71 75 65 72 79 20 22 70 61  | ...(let*.((node.(esxml-query."pa | 
| 2f60 |  63 6b 61 67 65 22 20 63 6f 6e 74 65 6e 74 29 29    0a 20 20 20 20 20 20 20 20 20 28 76 65 72 73 69  | ckage".content))..........(versi | 
| 2f80 |  6f 6e 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64    65 20 27 76 65 72 73 69 6f 6e 29 29 29 0a 20 20  | on.(dom-attr.node.'version)))... | 
| 2fa0 |  20 20 28 77 68 65 6e 20 28 6e 6f 74 20 76 65 72    73 69 6f 6e 29 0a 20 20 20 20 20 20 28 65 72 72  | ..(when.(not.version).......(err | 
| 2fc0 |  6f 72 20 22 56 65 72 73 69 6f 6e 20 6e 6f 74 20    73 70 65 63 69 66 69 65 64 22 29 29 0a 20 20 20  | or."Version.not.specified")).... | 
| 2fe0 |  20 76 65 72 73 69 6f 6e 29 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 75  | .version))..(defun.nov-content-u | 
| 3000 |  6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65 72    2d 6e 61 6d 65 20 28 63 6f 6e 74 65 6e 74 29 0a  | nique-identifier-name.(content). | 
| 3020 |  20 20 22 52 65 74 75 72 6e 20 74 68 65 20 75 6e    69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 20  | .."Return.the.unique.identifier. | 
| 3040 |  6e 61 6d 65 20 72 65 66 65 72 65 6e 63 65 64 20    69 6e 20 43 4f 4e 54 45 4e 54 2e 0a 54 68 69 73  | name.referenced.in.CONTENT..This | 
| 3060 |  20 69 73 20 75 73 65 64 20 69 6e 20 60 6e 6f 76    2d 63 6f 6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d  | .is.used.in.`nov-content-unique- | 
| 3080 |  69 64 65 6e 74 69 66 69 65 72 27 20 74 6f 20 72    65 74 72 69 65 76 65 20 74 68 65 0a 74 68 65 20  | identifier'.to.retrieve.the.the. | 
| 30a0 |  73 70 65 63 69 66 69 63 20 74 79 70 65 20 6f 66    20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69  | specific.type.of.unique.identifi | 
| 30c0 |  65 72 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6e    6f 64 65 20 28 65 73 78 6d 6c 2d 71 75 65 72 79  | er."...(let*.((node.(esxml-query | 
| 30e0 |  20 22 70 61 63 6b 61 67 65 5b 75 6e 69 71 75 65    2d 69 64 65 6e 74 69 66 69 65 72 5d 22 20 63 6f  | ."package[unique-identifier]".co | 
| 3100 |  6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20    20 28 6e 61 6d 65 20 28 64 6f 6d 2d 61 74 74 72  | ntent))..........(name.(dom-attr | 
| 3120 |  20 6e 6f 64 65 20 27 75 6e 69 71 75 65 2d 69 64    65 6e 74 69 66 69 65 72 29 29 29 0a 20 20 20 20  | .node.'unique-identifier)))..... | 
| 3140 |  28 77 68 65 6e 20 28 6e 6f 74 20 6e 61 6d 65 29    0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 55  | (when.(not.name).......(error."U | 
| 3160 |  6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72    20 6e 61 6d 65 20 6e 6f 74 20 73 70 65 63 69 66  | nique.identifier.name.not.specif | 
| 3180 |  69 65 64 22 29 29 0a 20 20 20 20 6e 61 6d 65 29    29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f  | ied")).....name))..(defun.nov-co | 
| 31a0 |  6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d 69 64 65    6e 74 69 66 69 65 72 20 28 63 6f 6e 74 65 6e 74  | ntent-unique-identifier.(content | 
| 31c0 |  29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20    74 68 65 20 75 6e 69 71 75 65 20 69 64 65 6e 74  | )..."Return.the.the.unique.ident | 
| 31e0 |  69 66 69 65 72 20 66 6f 72 20 43 4f 4e 54 45 4e    54 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6e 61  | ifier.for.CONTENT."...(let*.((na | 
| 3200 |  6d 65 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d    75 6e 69 71 75 65 2d 69 64 65 6e 74 69 66 69 65  | me.(nov-content-unique-identifie | 
| 3220 |  72 2d 6e 61 6d 65 20 63 6f 6e 74 65 6e 74 29 29    0a 20 20 20 20 20 20 20 20 20 28 73 65 6c 65 63  | r-name.content))..........(selec | 
| 3240 |  74 6f 72 20 28 66 6f 72 6d 61 74 20 22 70 61 63    6b 61 67 65 3e 6d 65 74 61 64 61 74 61 3e 69 64  | tor.(format."package>metadata>id | 
| 3260 |  65 6e 74 69 66 69 65 72 5b 69 64 3d 27 25 73 27    5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | entifier[id='%s']".............. | 
| 3280 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65    73 78 6d 6c 2d 71 75 65 72 79 2d 63 73 73 2d 65  | ..............(esxml-query-css-e | 
| 32a0 |  73 63 61 70 65 20 6e 61 6d 65 29 29 29 0a 20 20    20 20 20 20 20 20 20 28 69 64 20 28 63 61 72 20  | scape.name)))..........(id.(car. | 
| 32c0 |  28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 28 65    73 78 6d 6c 2d 71 75 65 72 79 20 73 65 6c 65 63  | (dom-children.(esxml-query.selec | 
| 32e0 |  74 6f 72 20 63 6f 6e 74 65 6e 74 29 29 29 29 29    0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20  | tor.content))))).....(when.(not. | 
| 3300 |  69 64 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72    20 22 55 6e 69 71 75 65 20 69 64 65 6e 74 69 66  | id).......(error."Unique.identif | 
| 3320 |  69 65 72 20 6e 6f 74 20 66 6f 75 6e 64 20 62 79    20 69 74 73 20 6e 61 6d 65 3a 20 25 73 22 20 6e  | ier.not.found.by.its.name:.%s".n | 
| 3340 |  61 6d 65 29 29 0a 20 20 20 20 28 69 6e 74 65 72    6e 20 69 64 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45  | ame)).....(intern.id)))..;;.NOTE | 
| 3360 |  3a 20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66    69 65 72 20 69 73 20 71 75 65 72 69 65 64 20 73  | :.unique.identifier.is.queried.s | 
| 3380 |  65 70 61 72 61 74 65 6c 79 20 61 73 20 69 64 65    6e 74 69 66 69 65 72 73 20 63 61 6e 0a 3b 3b 20  | eparately.as.identifiers.can.;;. | 
| 33a0 |  61 70 70 65 61 72 20 6d 6f 72 65 20 74 68 61 6e    20 6f 6e 63 65 20 61 6e 64 20 6f 6e 6c 79 20 6f  | appear.more.than.once.and.only.o | 
| 33c0 |  6e 65 20 6f 66 20 74 68 65 6d 20 63 61 6e 20 62    65 20 74 68 65 20 75 6e 69 71 75 65 20 6f 6e 65  | ne.of.them.can.be.the.unique.one | 
| 33e0 |  0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 72 65 71    75 69 72 65 64 2d 6d 65 74 61 64 61 74 61 2d 74  | .(defvar.nov-required-metadata-t | 
| 3400 |  61 67 73 20 27 28 74 69 74 6c 65 20 6c 61 6e 67    75 61 67 65 29 0a 20 20 22 52 65 71 75 69 72 65  | ags.'(title.language)..."Require | 
| 3420 |  64 20 6d 65 74 61 64 61 74 61 20 74 61 67 73 20    75 73 65 64 20 66 6f 72 20 60 6e 6f 76 2d 63 6f  | d.metadata.tags.used.for.`nov-co | 
| 3440 |  6e 74 65 6e 74 2d 6d 65 74 61 64 61 74 61 27 2e    22 29 0a 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d  | ntent-metadata'.")..(defvar.nov- | 
| 3460 |  6f 70 74 69 6f 6e 61 6c 2d 6d 65 74 61 64 61 74    61 2d 74 61 67 73 0a 20 20 27 28 63 6f 6e 74 72  | optional-metadata-tags...'(contr | 
| 3480 |  69 62 75 74 6f 72 20 63 6f 76 65 72 61 67 65 20    63 72 65 61 74 6f 72 20 64 61 74 65 20 64 65 73  | ibutor.coverage.creator.date.des | 
| 34a0 |  63 72 69 70 74 69 6f 6e 20 66 6f 72 6d 61 74 0a    20 20 20 20 70 75 62 6c 69 73 68 65 72 20 72 65  | cription.format.....publisher.re | 
| 34c0 |  6c 61 74 69 6f 6e 20 72 69 67 68 74 73 20 73 6f    75 72 63 65 20 73 75 62 6a 65 63 74 20 74 79 70  | lation.rights.source.subject.typ | 
| 34e0 |  65 29 0a 20 20 22 4f 70 74 69 6f 6e 61 6c 20 6d    65 74 61 64 61 74 61 20 74 61 67 73 20 75 73 65  | e)..."Optional.metadata.tags.use | 
| 3500 |  64 20 66 6f 72 20 60 6e 6f 76 2d 63 6f 6e 74 65    6e 74 2d 6d 65 74 61 64 61 74 61 27 2e 22 29 0a  | d.for.`nov-content-metadata'."). | 
| 3520 |  0a 28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74    65 6e 74 2d 6d 65 74 61 64 61 74 61 20 28 63 6f  | .(defun.nov-content-metadata.(co | 
| 3540 |  6e 74 65 6e 74 29 0a 20 20 22 52 65 74 75 72 6e    20 61 20 6d 65 74 61 64 61 74 61 20 61 6c 69 73  | ntent)..."Return.a.metadata.alis | 
| 3560 |  74 20 66 6f 72 20 43 4f 4e 54 45 4e 54 2e 0a 52    65 71 75 69 72 65 64 20 6b 65 79 73 20 61 72 65  | t.for.CONTENT..Required.keys.are | 
| 3580 |  20 5c 5c 3d 27 69 64 65 6e 74 69 66 69 65 72 20    61 6e 64 20 65 76 65 72 79 74 68 69 6e 67 20 69  | .\\='identifier.and.everything.i | 
| 35a0 |  6e 0a 60 6e 6f 76 2d 72 65 71 75 69 72 65 64 2d    6d 65 74 61 64 61 74 61 2d 74 61 67 73 27 2c 20  | n.`nov-required-metadata-tags',. | 
| 35c0 |  6f 70 74 69 6f 6e 61 6c 20 6b 65 79 73 20 61 72    65 20 69 6e 0a 60 6e 6f 76 2d 6f 70 74 69 6f 6e  | optional.keys.are.in.`nov-option | 
| 35e0 |  61 6c 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73    27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 69 64  | al-metadata-tags'."...(let*.((id | 
| 3600 |  65 6e 74 69 66 69 65 72 20 28 6e 6f 76 2d 63 6f    6e 74 65 6e 74 2d 75 6e 69 71 75 65 2d 69 64 65  | entifier.(nov-content-unique-ide | 
| 3620 |  6e 74 69 66 69 65 72 20 63 6f 6e 74 65 6e 74 29    29 0a 20 20 20 20 20 20 20 20 20 28 63 61 6e 64  | ntifier.content))..........(cand | 
| 3640 |  69 64 61 74 65 73 20 28 6d 61 70 63 61 72 20 28    6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20  | idates.(mapcar.(lambda.(node)... | 
| 3660 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f  | .............................(co | 
| 3680 |  6e 73 20 28 64 6f 6d 2d 74 61 67 20 6e 6f 64 65    29 20 28 63 61 72 20 28 64 6f 6d 2d 63 68 69 6c  | ns.(dom-tag.node).(car.(dom-chil | 
| 36a0 |  64 72 65 6e 20 6e 6f 64 65 29 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | dren.node))))................... | 
| 36c0 |  20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d    6c 2d 71 75 65 72 79 2d 61 6c 6c 20 22 70 61 63  | ...........(esxml-query-all."pac | 
| 36e0 |  6b 61 67 65 3e 6d 65 74 61 64 61 74 61 3e 2a 22    20 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 20  | kage>metadata>*".content)))..... | 
| 3700 |  20 20 20 20 20 28 72 65 71 75 69 72 65 64 20 28    6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28  | .....(required.(mapcar.(lambda.( | 
| 3720 |  74 61 67 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tag)............................ | 
| 3740 |  20 20 28 6c 65 74 20 28 28 63 61 6e 64 69 64 61    74 65 20 28 63 64 72 20 28 61 73 73 71 20 74 61  | ..(let.((candidate.(cdr.(assq.ta | 
| 3760 |  67 20 63 61 6e 64 69 64 61 74 65 73 29 29 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g.candidates))))................ | 
| 3780 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 77 68 65 6e 20 28 6e 6f 74 20 63 61 6e 64 69  | ................(when.(not.candi | 
| 37a0 |  64 61 74 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | date)........................... | 
| 37c0 |  20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20    74 68 69 73 20 73 68 6f 75 6c 64 20 69 64 65 61  | .......;;.NOTE:.this.should.idea | 
| 37e0 |  6c 6c 79 20 62 65 20 61 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | lly.be.a........................ | 
| 3800 |  20 20 20 20 20 20 20 20 20 20 3b 3b 20 77 61 72    6e 69 6e 67 2c 20 62 75 74 20 60 77 61 72 6e 27  | ..........;;.warning,.but.`warn' | 
| 3820 |  20 69 73 20 74 6f 6f 20 6f 62 74 72 75 73 69 76    65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | .is.too.obtrusive............... | 
| 3840 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 28 6d 65 73 73 61 67 65 20 22 52 65 71  | ...................(message."Req | 
| 3860 |  75 69 72 65 64 20 6d 65 74 61 64 61 74 75 6d 20    25 73 20 6e 6f 74 20 66 6f 75 6e 64 22 20 74 61  | uired.metadatum.%s.not.found".ta | 
| 3880 |  67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | g))............................. | 
| 38a0 |  20 20 20 28 63 6f 6e 73 20 74 61 67 20 63 61 6e    64 69 64 61 74 65 29 29 29 0a 20 20 20 20 20 20  | ...(cons.tag.candidate)))....... | 
| 38c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 6e 6f 76 2d 72 65 71 75 69 72 65  | .....................nov-require | 
| 38e0 |  64 2d 6d 65 74 61 64 61 74 61 2d 74 61 67 73 29    29 0a 20 20 20 20 20 20 20 20 20 28 6f 70 74 69  | d-metadata-tags))..........(opti | 
| 3900 |  6f 6e 61 6c 20 28 6d 61 70 63 61 72 20 28 6c 61    6d 62 64 61 20 28 74 61 67 29 20 28 63 6f 6e 73  | onal.(mapcar.(lambda.(tag).(cons | 
| 3920 |  20 74 61 67 20 28 63 64 72 20 28 61 73 73 71 20    74 61 67 20 63 61 6e 64 69 64 61 74 65 73 29 29  | .tag.(cdr.(assq.tag.candidates)) | 
| 3940 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f  | ))............................no | 
| 3960 |  76 2d 6f 70 74 69 6f 6e 61 6c 2d 6d 65 74 61 64    61 74 61 2d 74 61 67 73 29 29 29 0a 20 20 20 20  | v-optional-metadata-tags)))..... | 
| 3980 |  28 61 70 70 65 6e 64 20 60 28 28 69 64 65 6e 74    69 66 69 65 72 20 2e 20 2c 69 64 65 6e 74 69 66  | (append.`((identifier...,identif | 
| 39a0 |  69 65 72 29 29 20 72 65 71 75 69 72 65 64 20 6f    70 74 69 6f 6e 61 6c 29 29 29 0a 0a 28 64 65 66  | ier)).required.optional)))..(def | 
| 39c0 |  75 6e 20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 6d    61 6e 69 66 65 73 74 20 28 64 69 72 65 63 74 6f  | un.nov-content-manifest.(directo | 
| 39e0 |  72 79 20 63 6f 6e 74 65 6e 74 29 0a 20 20 22 45    78 74 72 61 63 74 20 61 6e 20 61 6c 69 73 74 20  | ry.content)..."Extract.an.alist. | 
| 3a00 |  6f 66 20 6d 61 6e 69 66 65 73 74 20 66 69 6c 65    73 20 66 6f 72 20 43 4f 4e 54 45 4e 54 20 69 6e  | of.manifest.files.for.CONTENT.in | 
| 3a20 |  20 44 49 52 45 43 54 4f 52 59 2e 0a 45 61 63 68    20 61 6c 69 73 74 20 69 74 65 6d 20 63 6f 6e 73  | .DIRECTORY..Each.alist.item.cons | 
| 3a40 |  69 73 74 73 20 6f 66 20 74 68 65 20 69 64 65 6e    74 69 66 69 65 72 20 61 6e 64 20 66 75 6c 6c 20  | ists.of.the.identifier.and.full. | 
| 3a60 |  70 61 74 68 2e 22 0a 20 20 28 6d 61 70 63 61 72    20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a  | path."...(mapcar.(lambda.(node). | 
| 3a80 |  20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 69 64 20 28 64 6f 6d 2d 61 74 74 72 20  | ............(let.((id.(dom-attr. | 
| 3aa0 |  6e 6f 64 65 20 27 69 64 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 72  | node.'id))...................(hr | 
| 3ac0 |  65 66 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64    65 20 27 68 72 65 66 29 29 29 0a 20 20 20 20 20  | ef.(dom-attr.node.'href)))...... | 
| 3ae0 |  20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28    69 6e 74 65 72 6e 20 69 64 29 0a 20 20 20 20 20  | .........(cons.(intern.id)...... | 
| 3b00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28    6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20 64 69  | ...............(nov-make-path.di | 
| 3b20 |  72 65 63 74 6f 72 79 20 28 6e 6f 76 2d 75 72 6c    64 65 63 6f 64 65 20 68 72 65 66 29 29 29 29 29  | rectory.(nov-urldecode.href))))) | 
| 3b40 |  0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d    6c 2d 71 75 65 72 79 2d 61 6c 6c 20 22 70 61 63  | ...........(esxml-query-all."pac | 
| 3b60 |  6b 61 67 65 3e 6d 61 6e 69 66 65 73 74 3e 69 74    65 6d 22 20 63 6f 6e 74 65 6e 74 29 29 29 0a 0a  | kage>manifest>item".content))).. | 
| 3b80 |  28 64 65 66 75 6e 20 6e 6f 76 2d 63 6f 6e 74 65    6e 74 2d 73 70 69 6e 65 20 28 63 6f 6e 74 65 6e  | (defun.nov-content-spine.(conten | 
| 3ba0 |  74 29 0a 20 20 22 45 78 74 72 61 63 74 20 61 20    6c 69 73 74 20 6f 66 20 73 70 69 6e 65 20 69 64  | t)..."Extract.a.list.of.spine.id | 
| 3bc0 |  65 6e 74 69 66 69 65 72 73 20 66 6f 72 20 43 4f    4e 54 45 4e 54 2e 22 0a 20 20 28 6d 61 70 63 61  | entifiers.for.CONTENT."...(mapca | 
| 3be0 |  72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29    20 28 69 6e 74 65 72 6e 20 28 64 6f 6d 2d 61 74  | r.(lambda.(node).(intern.(dom-at | 
| 3c00 |  74 72 20 6e 6f 64 65 20 27 69 64 72 65 66 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78  | tr.node.'idref)))...........(esx | 
| 3c20 |  6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 22 70 61    63 6b 61 67 65 3e 73 70 69 6e 65 3e 69 74 65 6d  | ml-query-all."package>spine>item | 
| 3c40 |  72 65 66 22 20 63 6f 6e 74 65 6e 74 29 29 29 0a    0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 63 6f 6e  | ref".content)))..(defun.nov--con | 
| 3c60 |  74 65 6e 74 2d 65 70 75 62 32 2d 66 69 6c 65 73    20 28 63 6f 6e 74 65 6e 74 20 6d 61 6e 69 66 65  | tent-epub2-files.(content.manife | 
| 3c80 |  73 74 20 66 69 6c 65 73 29 0a 20 20 28 6c 65 74    2a 20 28 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d  | st.files)...(let*.((node.(esxml- | 
| 3ca0 |  71 75 65 72 79 20 22 70 61 63 6b 61 67 65 3e 73    70 69 6e 65 5b 74 6f 63 5d 22 20 63 6f 6e 74 65  | query."package>spine[toc]".conte | 
| 3cc0 |  6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 69    64 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64 65  | nt))..........(id.(dom-attr.node | 
| 3ce0 |  20 27 74 6f 63 29 29 29 0a 20 20 20 20 28 77 68    65 6e 20 28 6e 6f 74 20 69 64 29 0a 20 20 20 20  | .'toc))).....(when.(not.id)..... | 
| 3d00 |  20 20 28 65 72 72 6f 72 20 22 45 50 55 42 20 32    20 4e 43 58 20 49 44 20 6e 6f 74 20 66 6f 75 6e  | ..(error."EPUB.2.NCX.ID.not.foun | 
| 3d20 |  64 22 29 29 0a 20 20 20 20 28 73 65 74 71 20 6e    6f 76 2d 74 6f 63 2d 69 64 20 28 69 6e 74 65 72  | d")).....(setq.nov-toc-id.(inter | 
| 3d40 |  6e 20 69 64 29 29 0a 20 20 20 20 28 6c 65 74 20    28 28 74 6f 63 2d 66 69 6c 65 20 28 61 73 73 71  | n.id)).....(let.((toc-file.(assq | 
| 3d60 |  20 6e 6f 76 2d 74 6f 63 2d 69 64 20 6d 61 6e 69    66 65 73 74 29 29 29 0a 20 20 20 20 20 20 28 77  | .nov-toc-id.manifest))).......(w | 
| 3d80 |  68 65 6e 20 28 6e 6f 74 20 74 6f 63 2d 66 69 6c    65 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f  | hen.(not.toc-file).........(erro | 
| 3da0 |  72 20 22 45 50 55 42 20 32 20 4e 43 58 20 66 69    6c 65 20 6e 6f 74 20 66 6f 75 6e 64 22 29 29 0a  | r."EPUB.2.NCX.file.not.found")). | 
| 3dc0 |  20 20 20 20 20 20 28 63 6f 6e 73 20 74 6f 63 2d    66 69 6c 65 20 66 69 6c 65 73 29 29 29 29 0a 0a  | ......(cons.toc-file.files)))).. | 
| 3de0 |  28 64 65 66 75 6e 20 6e 6f 76 2d 2d 63 6f 6e 74    65 6e 74 2d 65 70 75 62 33 2d 66 69 6c 65 73 20  | (defun.nov--content-epub3-files. | 
| 3e00 |  28 63 6f 6e 74 65 6e 74 20 6d 61 6e 69 66 65 73    74 20 66 69 6c 65 73 29 0a 20 20 28 6c 65 74 2a  | (content.manifest.files)...(let* | 
| 3e20 |  20 28 28 6e 6f 64 65 20 28 65 73 78 6d 6c 2d 71    75 65 72 79 20 22 70 61 63 6b 61 67 65 3e 6d 61  | .((node.(esxml-query."package>ma | 
| 3e40 |  6e 69 66 65 73 74 3e 69 74 65 6d 5b 70 72 6f 70    65 72 74 69 65 73 7e 3d 6e 61 76 5d 22 20 63 6f  | nifest>item[properties~=nav]".co | 
| 3e60 |  6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20    20 28 69 64 20 28 64 6f 6d 2d 61 74 74 72 20 6e  | ntent))..........(id.(dom-attr.n | 
| 3e80 |  6f 64 65 20 27 69 64 29 29 29 0a 20 20 20 20 28    77 68 65 6e 20 28 6e 6f 74 20 69 64 29 0a 20 20  | ode.'id))).....(when.(not.id)... | 
| 3ea0 |  20 20 20 20 28 65 72 72 6f 72 20 22 45 50 55 42    20 33 20 3c 6e 61 76 3e 20 49 44 20 6e 6f 74 20  | ....(error."EPUB.3.<nav>.ID.not. | 
| 3ec0 |  66 6f 75 6e 64 22 29 29 0a 20 20 20 20 28 73 65    74 71 20 6e 6f 76 2d 74 6f 63 2d 69 64 20 28 69  | found")).....(setq.nov-toc-id.(i | 
| 3ee0 |  6e 74 65 72 6e 20 69 64 29 29 0a 20 20 20 20 28    6c 65 74 20 28 28 74 6f 63 2d 66 69 6c 65 20 28  | ntern.id)).....(let.((toc-file.( | 
| 3f00 |  61 73 73 71 20 6e 6f 76 2d 74 6f 63 2d 69 64 20    6d 61 6e 69 66 65 73 74 29 29 29 0a 20 20 20 20  | assq.nov-toc-id.manifest)))..... | 
| 3f20 |  20 20 28 77 68 65 6e 20 28 6e 6f 74 20 74 6f 63    2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 28  | ..(when.(not.toc-file).........( | 
| 3f40 |  65 72 72 6f 72 20 22 45 50 55 42 20 33 20 3c 6e    61 76 3e 20 66 69 6c 65 20 6e 6f 74 20 66 6f 75  | error."EPUB.3.<nav>.file.not.fou | 
| 3f60 |  6e 64 22 29 29 0a 20 20 20 20 20 20 28 73 65 74    71 20 66 69 6c 65 73 20 28 73 65 71 2d 72 65 6d  | nd")).......(setq.files.(seq-rem | 
| 3f80 |  6f 76 65 20 28 6c 61 6d 62 64 61 20 28 69 74 65    6d 29 20 28 65 71 20 28 63 61 72 20 69 74 65 6d  | ove.(lambda.(item).(eq.(car.item | 
| 3fa0 |  29 20 6e 6f 76 2d 74 6f 63 2d 69 64 29 29 20 66    69 6c 65 73 29 29 0a 20 20 20 20 20 20 28 63 6f  | ).nov-toc-id)).files)).......(co | 
| 3fc0 |  6e 73 20 74 6f 63 2d 66 69 6c 65 20 66 69 6c 65    73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f  | ns.toc-file.files))))..(defun.no | 
| 3fe0 |  76 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 73 20    28 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65  | v-content-files.(directory.conte | 
| 4000 |  6e 74 29 0a 20 20 22 43 72 65 61 74 65 20 63 6f    72 72 65 63 74 6c 79 20 6f 72 64 65 72 65 64 20  | nt)..."Create.correctly.ordered. | 
| 4020 |  66 69 6c 65 20 61 6c 69 73 74 20 66 6f 72 20 43    4f 4e 54 45 4e 54 20 69 6e 20 44 49 52 45 43 54  | file.alist.for.CONTENT.in.DIRECT | 
| 4040 |  4f 52 59 2e 0a 45 61 63 68 20 61 6c 69 73 74 20    69 74 65 6d 20 63 6f 6e 73 69 73 74 73 20 6f 66  | ORY..Each.alist.item.consists.of | 
| 4060 |  20 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20    61 6e 64 20 66 75 6c 6c 20 70 61 74 68 2e 22 0a  | .the.identifier.and.full.path.". | 
| 4080 |  20 20 28 6c 65 74 2a 20 28 28 6d 61 6e 69 66 65    73 74 20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d  | ..(let*.((manifest.(nov-content- | 
| 40a0 |  6d 61 6e 69 66 65 73 74 20 64 69 72 65 63 74 6f    72 79 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20  | manifest.directory.content)).... | 
| 40c0 |  20 20 20 20 20 20 28 73 70 69 6e 65 20 28 6e 6f    76 2d 63 6f 6e 74 65 6e 74 2d 73 70 69 6e 65 20  | ......(spine.(nov-content-spine. | 
| 40e0 |  63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20    20 20 20 28 66 69 6c 65 73 20 28 6d 61 70 63 61  | content))..........(files.(mapca | 
| 4100 |  72 20 28 6c 61 6d 62 64 61 20 28 69 74 65 6d 29    20 28 61 73 73 71 20 69 74 65 6d 20 6d 61 6e 69  | r.(lambda.(item).(assq.item.mani | 
| 4120 |  66 65 73 74 29 29 20 73 70 69 6e 65 29 29 29 0a    20 20 20 20 28 69 66 20 28 76 65 72 73 69 6f 6e  | fest)).spine))).....(if.(version | 
| 4140 |  3c 20 6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69    6f 6e 20 22 33 2e 30 22 29 0a 20 20 20 20 20 20  | <.nov-epub-version."3.0")....... | 
| 4160 |  20 20 28 6e 6f 76 2d 2d 63 6f 6e 74 65 6e 74 2d    65 70 75 62 32 2d 66 69 6c 65 73 20 63 6f 6e 74  | ..(nov--content-epub2-files.cont | 
| 4180 |  65 6e 74 20 6d 61 6e 69 66 65 73 74 20 66 69 6c    65 73 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 2d  | ent.manifest.files).......(nov-- | 
| 41a0 |  63 6f 6e 74 65 6e 74 2d 65 70 75 62 33 2d 66 69    6c 65 73 20 63 6f 6e 74 65 6e 74 20 6d 61 6e 69  | content-epub3-files.content.mani | 
| 41c0 |  66 65 73 74 20 66 69 6c 65 73 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 6e 6f 76 2d 2d 77 61 6c 6b  | fest.files))))..(defun.nov--walk | 
| 41e0 |  2d 6e 63 78 2d 6e 6f 64 65 20 28 6e 6f 64 65 29    0a 20 20 28 6c 65 74 20 28 28 74 61 67 20 28 64  | -ncx-node.(node)...(let.((tag.(d | 
| 4200 |  6f 6d 2d 74 61 67 20 6e 6f 64 65 29 29 0a 20 20    20 20 20 20 20 20 28 63 68 69 6c 64 72 65 6e 20  | om-tag.node)).........(children. | 
| 4220 |  28 73 65 71 2d 66 69 6c 74 65 72 20 28 6c 61 6d    62 64 61 20 28 63 68 69 6c 64 29 20 28 65 71 20  | (seq-filter.(lambda.(child).(eq. | 
| 4240 |  28 64 6f 6d 2d 74 61 67 20 63 68 69 6c 64 29 20    27 6e 61 76 50 6f 69 6e 74 29 29 0a 20 20 20 20  | (dom-tag.child).'navPoint))..... | 
| 4260 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 64 6f 6d 2d 63  | ..........................(dom-c | 
| 4280 |  68 69 6c 64 72 65 6e 20 6e 6f 64 65 29 29 29 29    0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20  | hildren.node)))).....(cond...... | 
| 42a0 |  28 28 65 71 20 74 61 67 20 27 6e 61 76 4d 61 70    29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20  | ((eq.tag.'navMap).......(insert. | 
| 42c0 |  22 3c 6f 6c 3e 5c 6e 22 29 0a 20 20 20 20 20 20    28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 6e  | "<ol>\n").......(mapc.(lambda.(n | 
| 42e0 |  6f 64 65 29 20 28 6e 6f 76 2d 2d 77 61 6c 6b 2d    6e 63 78 2d 6e 6f 64 65 20 6e 6f 64 65 29 29 20  | ode).(nov--walk-ncx-node.node)). | 
| 4300 |  63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 20 20    28 69 6e 73 65 72 74 20 22 3c 2f 6f 6c 3e 5c 6e  | children).......(insert."</ol>\n | 
| 4320 |  22 29 29 0a 20 20 20 20 20 28 28 65 71 20 74 61    67 20 27 6e 61 76 50 6f 69 6e 74 29 0a 20 20 20  | "))......((eq.tag.'navPoint).... | 
| 4340 |  20 20 20 28 6c 65 74 2a 20 28 28 6e 61 76 6c 61    62 65 6c 2d 6e 6f 64 65 20 28 64 6f 6d 2d 62 79  | ...(let*.((navlabel-node.(dom-by | 
| 4360 |  2d 74 61 67 20 6e 6f 64 65 20 27 6e 61 76 4c 61    62 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20  | -tag.node.'navLabel))........... | 
| 4380 |  20 20 20 28 6c 61 62 65 6c 2d 6e 6f 64 65 20 28    64 6f 6d 2d 62 79 2d 74 61 67 20 6e 61 76 6c 61  | ...(label-node.(dom-by-tag.navla | 
| 43a0 |  62 65 6c 2d 6e 6f 64 65 20 27 74 65 78 74 29 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63  | bel-node.'text))..............(c | 
| 43c0 |  6f 6e 74 65 6e 74 2d 6e 6f 64 65 20 28 64 6f 6d    2d 62 79 2d 74 61 67 20 6e 6f 64 65 20 27 63 6f  | ontent-node.(dom-by-tag.node.'co | 
| 43e0 |  6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 28 68 72 65 66 20 28 6e 6f 76 2d  | ntent))..............(href.(nov- | 
| 4400 |  75 72 6c 64 65 63 6f 64 65 20 28 64 6f 6d 2d 61    74 74 72 20 63 6f 6e 74 65 6e 74 2d 6e 6f 64 65  | urldecode.(dom-attr.content-node | 
| 4420 |  20 27 73 72 63 29 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 28 6c 61 62 65 6c 20 28 61 6e  | .'src)))..............(label.(an | 
| 4440 |  64 20 6c 61 62 65 6c 2d 6e 6f 64 65 20 28 63 61    72 20 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20  | d.label-node.(car.(dom-children. | 
| 4460 |  6c 61 62 65 6c 2d 6e 6f 64 65 29 29 29 29 29 0a    20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e  | label-node))))).........(when.(n | 
| 4480 |  6f 74 20 68 72 65 66 29 0a 20 20 20 20 20 20 20    20 20 20 28 65 72 72 6f 72 20 22 4e 61 76 69 67  | ot.href)...........(error."Navig | 
| 44a0 |  61 74 69 6f 6e 20 70 6f 69 6e 74 20 69 73 20 6d    69 73 73 69 6e 67 20 68 72 65 66 20 61 74 74 72  | ation.point.is.missing.href.attr | 
| 44c0 |  69 62 75 74 65 22 29 29 0a 20 20 20 20 20 20 20    20 28 6c 65 74 20 28 28 6c 69 6e 6b 20 28 66 6f  | ibute")).........(let.((link.(fo | 
| 44e0 |  72 6d 61 74 20 22 3c 61 20 68 72 65 66 3d 5c 22    25 73 5c 22 3e 25 73 3c 2f 61 3e 22 0a 20 20 20  | rmat."<a.href=\"%s\">%s</a>".... | 
| 4500 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 69 6e  | .........................(url-in | 
| 4520 |  73 65 72 74 2d 65 6e 74 69 74 69 65 73 2d 69 6e    2d 73 74 72 69 6e 67 20 68 72 65 66 29 0a 20 20  | sert-entities-in-string.href)... | 
| 4540 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 69  | ..........................(url-i | 
| 4560 |  6e 73 65 72 74 2d 65 6e 74 69 74 69 65 73 2d 69    6e 2d 73 74 72 69 6e 67 20 28 6f 72 20 6c 61 62  | nsert-entities-in-string.(or.lab | 
| 4580 |  65 6c 20 68 72 65 66 29 29 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 28 69 66 20 63 68 69 6c 64  | el.href)))))...........(if.child | 
| 45a0 |  72 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20  | ren...............(progn........ | 
| 45c0 |  20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74    20 28 66 6f 72 6d 61 74 20 22 3c 6c 69 3e 5c 6e  | .........(insert.(format."<li>\n | 
| 45e0 |  25 73 5c 6e 3c 6f 6c 3e 5c 6e 22 20 6c 69 6e 6b    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | %s\n<ol>\n".link)).............. | 
| 4600 |  20 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61    20 28 6e 6f 64 65 29 20 28 6e 6f 76 2d 2d 77 61  | ...(mapc.(lambda.(node).(nov--wa | 
| 4620 |  6c 6b 2d 6e 63 78 2d 6e 6f 64 65 20 6e 6f 64 65    29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | lk-ncx-node.node)).............. | 
| 4640 |  20 20 20 20 20 20 20 20 20 63 68 69 6c 64 72 65    6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | .........children).............. | 
| 4660 |  20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d    61 74 20 22 3c 2f 6f 6c 3e 5c 6e 3c 2f 6c 69 3e  | ...(insert.(format."</ol>\n</li> | 
| 4680 |  5c 6e 22 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 69 6e 73 65 72 74 20 28 66 6f 72 6d  | \n"))).............(insert.(form | 
| 46a0 |  61 74 20 22 3c 6c 69 3e 5c 6e 25 73 5c 6e 3c 2f    6c 69 3e 5c 6e 22 20 6c 69 6e 6b 29 29 29 29 29  | at."<li>\n%s\n</li>\n".link))))) | 
| 46c0 |  29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76    2d 6e 63 78 2d 74 6f 2d 68 74 6d 6c 20 28 70 61  | ))))..(defun.nov-ncx-to-html.(pa | 
| 46e0 |  74 68 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 4e    43 58 20 64 6f 63 75 6d 65 6e 74 20 61 74 20 50  | th)..."Convert.NCX.document.at.P | 
| 4700 |  41 54 48 20 74 6f 20 48 54 4d 4c 2e 22 0a 20 20    28 6c 65 74 20 28 28 72 6f 6f 74 20 28 65 73 78  | ATH.to.HTML."...(let.((root.(esx | 
| 4720 |  6d 6c 2d 71 75 65 72 79 20 22 6e 61 76 4d 61 70    22 20 28 6e 6f 76 2d 73 6c 75 72 70 20 70 61 74  | ml-query."navMap".(nov-slurp.pat | 
| 4740 |  68 20 74 29 29 29 29 0a 20 20 20 20 28 77 69 74    68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20  | h.t)))).....(with-temp-buffer... | 
| 4760 |  20 20 20 20 28 6e 6f 76 2d 2d 77 61 6c 6b 2d 6e    63 78 2d 6e 6f 64 65 20 72 6f 6f 74 29 0a 20 20  | ....(nov--walk-ncx-node.root)... | 
| 4780 |  20 20 20 20 28 62 75 66 66 65 72 2d 73 74 72 69    6e 67 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 55 49  | ....(buffer-string))))....;;;.UI | 
| 47a0 |  0a 0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 6d 6f    64 65 2d 6d 61 70 0a 20 20 28 6c 65 74 20 28 28  | ..(defvar.nov-mode-map...(let.(( | 
| 47c0 |  6d 61 70 20 28 6d 61 6b 65 2d 73 70 61 72 73 65    2d 6b 65 79 6d 61 70 29 29 29 0a 20 20 20 20 28  | map.(make-sparse-keymap))).....( | 
| 47e0 |  64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28    6b 62 64 20 22 67 22 29 20 27 6e 6f 76 2d 72 65  | define-key.map.(kbd."g").'nov-re | 
| 4800 |  6e 64 65 72 2d 64 6f 63 75 6d 65 6e 74 29 0a 20    20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d  | nder-document).....(define-key.m | 
| 4820 |  61 70 20 28 6b 62 64 20 22 76 22 29 20 27 6e 6f    76 2d 76 69 65 77 2d 73 6f 75 72 63 65 29 0a 20  | ap.(kbd."v").'nov-view-source).. | 
| 4840 |  20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d    61 70 20 28 6b 62 64 20 22 56 22 29 20 27 6e 6f  | ...(define-key.map.(kbd."V").'no | 
| 4860 |  76 2d 76 69 65 77 2d 63 6f 6e 74 65 6e 74 2d 73    6f 75 72 63 65 29 0a 20 20 20 20 28 64 65 66 69  | v-view-content-source).....(defi | 
| 4880 |  6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20    22 61 22 29 20 27 6e 6f 76 2d 72 65 6f 70 65 6e  | ne-key.map.(kbd."a").'nov-reopen | 
| 48a0 |  2d 61 73 2d 61 72 63 68 69 76 65 29 0a 20 20 20    20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70  | -as-archive).....(define-key.map | 
| 48c0 |  20 28 6b 62 64 20 22 6d 22 29 20 27 6e 6f 76 2d    64 69 73 70 6c 61 79 2d 6d 65 74 61 64 61 74 61  | .(kbd."m").'nov-display-metadata | 
| 48e0 |  29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65    79 20 6d 61 70 20 28 6b 62 64 20 22 6e 22 29 20  | ).....(define-key.map.(kbd."n"). | 
| 4900 |  27 6e 6f 76 2d 6e 65 78 74 2d 64 6f 63 75 6d 65    6e 74 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d  | 'nov-next-document).....(define- | 
| 4920 |  6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 5d 22    29 20 27 6e 6f 76 2d 6e 65 78 74 2d 64 6f 63 75  | key.map.(kbd."]").'nov-next-docu | 
| 4940 |  6d 65 6e 74 29 0a 20 20 20 20 28 64 65 66 69 6e    65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22  | ment).....(define-key.map.(kbd." | 
| 4960 |  70 22 29 20 27 6e 6f 76 2d 70 72 65 76 69 6f 75    73 2d 64 6f 63 75 6d 65 6e 74 29 0a 20 20 20 20  | p").'nov-previous-document)..... | 
| 4980 |  28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20    28 6b 62 64 20 22 5b 22 29 20 27 6e 6f 76 2d 70  | (define-key.map.(kbd."[").'nov-p | 
| 49a0 |  72 65 76 69 6f 75 73 2d 64 6f 63 75 6d 65 6e 74    29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65  | revious-document).....(define-ke | 
| 49c0 |  79 20 6d 61 70 20 28 6b 62 64 20 22 74 22 29 20    27 6e 6f 76 2d 67 6f 74 6f 2d 74 6f 63 29 0a 20  | y.map.(kbd."t").'nov-goto-toc).. | 
| 49e0 |  20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d    61 70 20 28 6b 62 64 20 22 6c 22 29 20 27 6e 6f  | ...(define-key.map.(kbd."l").'no | 
| 4a00 |  76 2d 68 69 73 74 6f 72 79 2d 62 61 63 6b 29 0a    20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20  | v-history-back).....(define-key. | 
| 4a20 |  6d 61 70 20 28 6b 62 64 20 22 72 22 29 20 27 6e    6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61  | map.(kbd."r").'nov-history-forwa | 
| 4a40 |  72 64 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d    6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 54 41  | rd).....(define-key.map.(kbd."TA | 
| 4a60 |  42 22 29 20 27 73 68 72 2d 6e 65 78 74 2d 6c 69    6e 6b 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d  | B").'shr-next-link).....(define- | 
| 4a80 |  6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 4d 2d    54 41 42 22 29 20 27 73 68 72 2d 70 72 65 76 69  | key.map.(kbd."M-TAB").'shr-previ | 
| 4aa0 |  6f 75 73 2d 6c 69 6e 6b 29 0a 20 20 20 20 28 64    65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b  | ous-link).....(define-key.map.(k | 
| 4ac0 |  62 64 20 22 3c 62 61 63 6b 74 61 62 3e 22 29 20    27 73 68 72 2d 70 72 65 76 69 6f 75 73 2d 6c 69  | bd."<backtab>").'shr-previous-li | 
| 4ae0 |  6e 6b 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d    6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 53 50  | nk).....(define-key.map.(kbd."SP | 
| 4b00 |  43 22 29 20 27 6e 6f 76 2d 73 63 72 6f 6c 6c 2d    75 70 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d  | C").'nov-scroll-up).....(define- | 
| 4b20 |  6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 53 2d    53 50 43 22 29 20 27 6e 6f 76 2d 73 63 72 6f 6c  | key.map.(kbd."S-SPC").'nov-scrol | 
| 4b40 |  6c 2d 64 6f 77 6e 29 0a 20 20 20 20 28 64 65 66    69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64  | l-down).....(define-key.map.(kbd | 
| 4b60 |  20 22 44 45 4c 22 29 20 27 6e 6f 76 2d 73 63 72    6f 6c 6c 2d 64 6f 77 6e 29 0a 20 20 20 20 28 64  | ."DEL").'nov-scroll-down).....(d | 
| 4b80 |  65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 6b    62 64 20 22 3c 68 6f 6d 65 3e 22 29 20 27 62 65  | efine-key.map.(kbd."<home>").'be | 
| 4ba0 |  67 69 6e 6e 69 6e 67 2d 6f 66 2d 62 75 66 66 65    72 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b  | ginning-of-buffer).....(define-k | 
| 4bc0 |  65 79 20 6d 61 70 20 28 6b 62 64 20 22 3c 65 6e    64 3e 22 29 20 27 65 6e 64 2d 6f 66 2d 62 75 66  | ey.map.(kbd."<end>").'end-of-buf | 
| 4be0 |  66 65 72 29 0a 20 20 20 20 6d 61 70 29 29 0a 0a    28 64 65 66 76 61 72 20 6e 6f 76 2d 62 75 74 74  | fer).....map))..(defvar.nov-butt | 
| 4c00 |  6f 6e 2d 6d 61 70 0a 20 20 28 6c 65 74 20 28 28    6d 61 70 20 28 63 6f 70 79 2d 6b 65 79 6d 61 70  | on-map...(let.((map.(copy-keymap | 
| 4c20 |  20 6e 6f 76 2d 6d 6f 64 65 2d 6d 61 70 29 29 29    0a 20 20 20 20 28 73 65 74 2d 6b 65 79 6d 61 70  | .nov-mode-map))).....(set-keymap | 
| 4c40 |  2d 70 61 72 65 6e 74 20 6d 61 70 20 73 68 72 2d    6d 61 70 29 0a 20 20 20 20 28 64 65 66 69 6e 65  | -parent.map.shr-map).....(define | 
| 4c60 |  2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22 52    45 54 22 29 20 27 6e 6f 76 2d 62 72 6f 77 73 65  | -key.map.(kbd."RET").'nov-browse | 
| 4c80 |  2d 75 72 6c 29 0a 20 20 20 20 28 64 65 66 69 6e    65 2d 6b 65 79 20 6d 61 70 20 28 6b 62 64 20 22  | -url).....(define-key.map.(kbd." | 
| 4ca0 |  3c 6d 6f 75 73 65 2d 32 3e 22 29 20 27 6e 6f 76    2d 62 72 6f 77 73 65 2d 75 72 6c 29 0a 20 20 20  | <mouse-2>").'nov-browse-url).... | 
| 4cc0 |  20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70    20 28 6b 62 64 20 22 63 22 29 20 27 6e 6f 76 2d  | .(define-key.map.(kbd."c").'nov- | 
| 4ce0 |  63 6f 70 79 2d 75 72 6c 29 0a 20 20 20 20 6d 61    70 29 29 0a 0a 28 65 61 73 79 2d 6d 65 6e 75 2d  | copy-url).....map))..(easy-menu- | 
| 4d00 |  64 65 66 69 6e 65 20 6e 6f 76 2d 6d 6f 64 65 2d    6d 65 6e 75 20 6e 6f 76 2d 6d 6f 64 65 2d 6d 61  | define.nov-mode-menu.nov-mode-ma | 
| 4d20 |  70 20 22 4d 65 6e 75 20 66 6f 72 20 6e 6f 76 2d    6d 6f 64 65 22 0a 20 20 27 28 22 45 50 55 42 22  | p."Menu.for.nov-mode"...'("EPUB" | 
| 4d40 |  0a 20 20 20 20 5b 22 4e 65 78 74 22 20 6e 6f 76    2d 6e 65 78 74 2d 64 6f 63 75 6d 65 6e 74 0a 20  | .....["Next".nov-next-document.. | 
| 4d60 |  20 20 20 20 3a 68 65 6c 70 20 22 47 6f 20 74 6f    20 74 68 65 20 6e 65 78 74 20 64 6f 63 75 6d 65  | ....:help."Go.to.the.next.docume | 
| 4d80 |  6e 74 22 5d 0a 20 20 20 20 5b 22 50 72 65 76 69    6f 75 73 22 20 6e 6f 76 2d 70 72 65 76 69 6f 75  | nt"].....["Previous".nov-previou | 
| 4da0 |  73 2d 64 6f 63 75 6d 65 6e 74 0a 20 20 20 20 20    3a 68 65 6c 70 20 22 47 6f 20 74 6f 20 74 68 65  | s-document......:help."Go.to.the | 
| 4dc0 |  20 70 72 65 76 69 6f 75 73 20 64 6f 63 75 6d 65    6e 74 22 5d 0a 20 20 20 20 5b 22 42 61 63 6b 77  | .previous.document"].....["Backw | 
| 4de0 |  61 72 64 22 20 6e 6f 76 2d 68 69 73 74 6f 72 79    2d 62 61 63 6b 0a 20 20 20 20 20 3a 68 65 6c 70  | ard".nov-history-back......:help | 
| 4e00 |  20 22 47 6f 20 62 61 63 6b 20 69 6e 20 74 68 65    20 68 69 73 74 6f 72 79 20 74 6f 20 74 68 65 20  | ."Go.back.in.the.history.to.the. | 
| 4e20 |  6c 61 73 74 20 76 69 73 69 74 65 64 20 64 6f 63    75 6d 65 6e 74 22 5d 0a 20 20 20 20 5b 22 46 6f  | last.visited.document"].....["Fo | 
| 4e40 |  72 77 61 72 64 22 20 6e 6f 76 2d 68 69 73 74 6f    72 79 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20  | rward".nov-history-forward...... | 
| 4e60 |  3a 68 65 6c 70 20 22 47 6f 20 66 6f 72 77 61 72    64 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72 79  | :help."Go.forward.in.the.history | 
| 4e80 |  20 6f 66 20 76 69 73 69 74 65 64 20 64 6f 63 75    6d 65 6e 74 73 22 5d 0a 20 20 20 20 5b 22 4e 65  | .of.visited.documents"].....["Ne | 
| 4ea0 |  78 74 20 4c 69 6e 6b 22 20 73 68 72 2d 6e 65 78    74 2d 6c 69 6e 6b 0a 20 20 20 20 20 3a 68 65 6c  | xt.Link".shr-next-link......:hel | 
| 4ec0 |  70 20 22 47 6f 20 74 6f 20 74 68 65 20 6e 65 78    74 20 6c 69 6e 6b 22 5d 0a 20 20 20 20 5b 22 50  | p."Go.to.the.next.link"].....["P | 
| 4ee0 |  72 65 76 69 6f 75 73 20 4c 69 6e 6b 22 20 73 68    72 2d 70 72 65 76 69 6f 75 73 2d 6c 69 6e 6b 0a  | revious.Link".shr-previous-link. | 
| 4f00 |  20 20 20 20 20 3a 6b 65 79 73 20 22 4d 2d 54 41    42 22 0a 20 20 20 20 20 3a 68 65 6c 70 20 22 47  | .....:keys."M-TAB"......:help."G | 
| 4f20 |  6f 20 74 6f 20 74 68 65 20 70 72 65 76 69 6f 75    73 20 6c 69 6e 6b 22 5d 0a 20 20 20 20 5b 22 54  | o.to.the.previous.link"].....["T | 
| 4f40 |  61 62 6c 65 20 6f 66 20 43 6f 6e 74 65 6e 74 73    22 20 6e 6f 76 2d 67 6f 74 6f 2d 74 6f 63 0a 20  | able.of.Contents".nov-goto-toc.. | 
| 4f60 |  20 20 20 20 3a 68 65 6c 70 20 22 44 69 73 70 6c    61 79 20 74 68 65 20 74 61 62 6c 65 20 6f 66 20  | ....:help."Display.the.table.of. | 
| 4f80 |  63 6f 6e 74 65 6e 74 73 22 5d 0a 20 20 20 20 5b    22 52 65 64 69 73 70 6c 61 79 22 20 6e 6f 76 2d  | contents"].....["Redisplay".nov- | 
| 4fa0 |  72 65 6e 64 65 72 2d 64 6f 63 75 6d 65 6e 74 0a    20 20 20 20 20 3a 68 65 6c 70 20 22 52 65 64 69  | render-document......:help."Redi | 
| 4fc0 |  73 70 6c 61 79 20 74 68 65 20 64 6f 63 75 6d 65    6e 74 22 5d 0a 20 20 20 20 22 2d 2d 2d 22 0a 20  | splay.the.document"]....."---".. | 
| 4fe0 |  20 20 20 5b 22 56 69 65 77 20 4d 65 74 61 64 61    74 61 22 20 6e 6f 76 2d 64 69 73 70 6c 61 79 2d  | ...["View.Metadata".nov-display- | 
| 5000 |  6d 65 74 61 64 61 74 61 0a 20 20 20 20 20 3a 68    65 6c 70 20 22 56 69 65 77 20 74 68 65 20 6d 65  | metadata......:help."View.the.me | 
| 5020 |  74 61 64 61 74 61 20 6f 66 20 74 68 65 20 45 50    55 42 20 64 6f 63 75 6d 65 6e 74 22 5d 0a 20 20  | tadata.of.the.EPUB.document"]... | 
| 5040 |  20 20 5b 22 56 69 65 77 20 48 54 4d 4c 20 53 6f    75 72 63 65 22 20 6e 6f 76 2d 76 69 65 77 2d 73  | ..["View.HTML.Source".nov-view-s | 
| 5060 |  6f 75 72 63 65 0a 20 20 20 20 20 3a 68 65 6c 70    20 22 56 69 65 77 20 74 68 65 20 48 54 4d 4c 20  | ource......:help."View.the.HTML. | 
| 5080 |  73 6f 75 72 63 65 20 6f 66 20 74 68 65 20 63 75    72 72 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 69  | source.of.the.current.document.i | 
| 50a0 |  6e 20 61 20 6e 65 77 20 62 75 66 66 65 72 22 5d    0a 20 20 20 20 5b 22 56 69 65 77 20 4f 50 46 20  | n.a.new.buffer"].....["View.OPF. | 
| 50c0 |  53 6f 75 72 63 65 22 20 6e 6f 76 2d 76 69 65 77    2d 63 6f 6e 74 65 6e 74 2d 73 6f 75 72 63 65 0a  | Source".nov-view-content-source. | 
| 50e0 |  20 20 20 20 20 3a 68 65 6c 70 20 22 56 69 65 77    20 74 68 65 20 4f 50 46 20 73 6f 75 72 63 65 20  | .....:help."View.the.OPF.source. | 
| 5100 |  6f 66 20 74 68 65 20 45 50 55 42 20 64 6f 63 75    6d 65 6e 74 20 69 6e 20 61 20 6e 65 77 20 62 75  | of.the.EPUB.document.in.a.new.bu | 
| 5120 |  66 66 65 72 22 5d 0a 20 20 20 20 5b 22 56 69 65    77 20 61 73 20 41 72 63 68 69 76 65 22 20 6e 6f  | ffer"].....["View.as.Archive".no | 
| 5140 |  76 2d 72 65 6f 70 65 6e 2d 61 73 2d 61 72 63 68    69 76 65 0a 20 20 20 20 20 3a 68 65 6c 70 20 22  | v-reopen-as-archive......:help." | 
| 5160 |  52 65 6f 70 65 6e 20 74 68 65 20 45 50 55 42 20    64 6f 63 75 6d 65 6e 74 20 61 73 20 61 6e 20 61  | Reopen.the.EPUB.document.as.an.a | 
| 5180 |  72 63 68 69 76 65 22 5d 29 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 20  | rchive"]))..(defun.nov-clean-up. | 
| 51a0 |  28 29 0a 20 20 22 44 65 6c 65 74 65 20 74 65 6d    70 6f 72 61 72 79 20 66 69 6c 65 73 20 6f 66 20  | ()..."Delete.temporary.files.of. | 
| 51c0 |  74 68 65 20 63 75 72 72 65 6e 74 20 45 50 55 42    20 62 75 66 66 65 72 2e 22 0a 20 20 28 77 68 65  | the.current.EPUB.buffer."...(whe | 
| 51e0 |  6e 20 28 61 6e 64 20 6e 6f 76 2d 72 65 6d 6f 76    65 2d 77 6f 72 6b 2d 64 69 72 2d 6f 6e 2d 65 78  | n.(and.nov-remove-work-dir-on-ex | 
| 5200 |  69 74 2d 70 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69    72 29 0a 20 20 20 20 28 6c 65 74 20 28 28 69 64  | it-p.nov-work-dir).....(let.((id | 
| 5220 |  65 6e 74 69 66 69 65 72 20 28 63 64 72 20 28 61    73 73 71 20 27 69 64 65 6e 74 69 66 69 65 72 20  | entifier.(cdr.(assq.'identifier. | 
| 5240 |  6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 29 29 0a    20 20 20 20 20 20 20 20 20 20 28 69 6e 64 65 78  | nov-metadata)))...........(index | 
| 5260 |  20 28 69 66 20 28 69 6e 74 65 67 65 72 70 20 6e    6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64  | .(if.(integerp.nov-documents-ind | 
| 5280 |  65 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 6e 6f 76 2d 64 6f 63  | ex)......................nov-doc | 
| 52a0 |  75 6d 65 6e 74 73 2d 69 6e 64 65 78 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | uments-index.................... | 
| 52c0 |  30 29 29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d    73 61 76 65 2d 70 6c 61 63 65 20 69 64 65 6e 74  | 0))).......(nov-save-place.ident | 
| 52e0 |  69 66 69 65 72 20 69 6e 64 65 78 20 28 70 6f 69    6e 74 29 29 29 0a 20 20 20 20 28 6e 6f 76 2d 69  | ifier.index.(point))).....(nov-i | 
| 5300 |  67 6e 6f 72 65 2d 66 69 6c 65 2d 65 72 72 6f 72    73 0a 20 20 20 20 20 28 64 65 6c 65 74 65 2d 64  | gnore-file-errors......(delete-d | 
| 5320 |  69 72 65 63 74 6f 72 79 20 6e 6f 76 2d 77 6f 72    6b 2d 64 69 72 20 74 29 29 29 29 0a 0a 28 64 65  | irectory.nov-work-dir.t))))..(de | 
| 5340 |  66 75 6e 20 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70    2d 61 6c 6c 20 28 29 0a 20 20 22 44 65 6c 65 74  | fun.nov-clean-up-all.()..."Delet | 
| 5360 |  65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65    73 20 6f 66 20 61 6c 6c 20 6f 70 65 6e 65 64 20  | e.temporary.files.of.all.opened. | 
| 5380 |  45 50 55 42 20 62 75 66 66 65 72 73 2e 22 0a 20    20 28 64 6f 6c 69 73 74 20 28 62 75 66 66 65 72  | EPUB.buffers."...(dolist.(buffer | 
| 53a0 |  20 28 62 75 66 66 65 72 2d 6c 69 73 74 29 29 0a    20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e  | .(buffer-list)).....(with-curren | 
| 53c0 |  74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a    20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20  | t-buffer.buffer.......(when.(eq. | 
| 53e0 |  6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6e 6f 76 2d    6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 6e  | major-mode.'nov-mode).........(n | 
| 5400 |  6f 76 2d 63 6c 65 61 6e 2d 75 70 29 29 29 29 29    0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 65 78 74  | ov-clean-up)))))..(defun.nov-ext | 
| 5420 |  65 72 6e 61 6c 2d 75 72 6c 2d 70 20 28 75 72 6c    29 0a 20 20 22 52 65 74 75 72 6e 20 74 20 69 66  | ernal-url-p.(url)..."Return.t.if | 
| 5440 |  20 55 52 4c 20 72 65 66 65 72 73 20 74 6f 20 61    6e 20 65 78 74 65 72 6e 61 6c 20 64 6f 63 75 6d  | .URL.refers.to.an.external.docum | 
| 5460 |  65 6e 74 2e 22 0a 20 20 28 61 6e 64 20 28 75 72    6c 2d 74 79 70 65 20 28 75 72 6c 2d 67 65 6e 65  | ent."...(and.(url-type.(url-gene | 
| 5480 |  72 69 63 2d 70 61 72 73 65 2d 75 72 6c 20 75 72    6c 29 29 20 74 29 29 0a 0a 28 64 65 66 75 6e 20  | ric-parse-url.url)).t))..(defun. | 
| 54a0 |  6e 6f 76 2d 75 72 6c 2d 66 69 6c 65 6e 61 6d 65    2d 61 6e 64 2d 74 61 72 67 65 74 20 28 75 72 6c  | nov-url-filename-and-target.(url | 
| 54c0 |  29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 6c 69    73 74 20 6f 66 20 55 52 4c 27 73 20 66 69 6c 65  | )..."Return.a.list.of.URL's.file | 
| 54e0 |  6e 61 6d 65 20 61 6e 64 20 74 61 72 67 65 74 2e    22 0a 20 20 28 73 65 74 71 20 75 72 6c 20 28 75  | name.and.target."...(setq.url.(u | 
| 5500 |  72 6c 2d 67 65 6e 65 72 69 63 2d 70 61 72 73 65    2d 75 72 6c 20 75 72 6c 29 29 0a 20 20 28 6d 61  | rl-generic-parse-url.url))...(ma | 
| 5520 |  70 63 61 72 20 27 6e 6f 76 2d 75 72 6c 64 65 63    6f 64 65 20 28 6c 69 73 74 20 28 75 72 6c 2d 66  | pcar.'nov-urldecode.(list.(url-f | 
| 5540 |  69 6c 65 6e 61 6d 65 20 75 72 6c 29 20 28 75 72    6c 2d 74 61 72 67 65 74 20 75 72 6c 29 29 29 29  | ilename.url).(url-target.url)))) | 
| 5560 |  0a 0a 3b 3b 20 61 64 61 70 74 65 64 20 66 72 6f    6d 20 60 73 68 72 2d 72 65 73 63 61 6c 65 2d 69  | ..;;.adapted.from.`shr-rescale-i | 
| 5580 |  6d 61 67 65 27 0a 3b 3b 20 54 4f 44 4f 3a 20 61    64 6a 75 73 74 20 74 6f 20 6c 61 74 65 73 74 20  | mage'.;;.TODO:.adjust.to.latest. | 
| 55a0 |  73 68 72 20 63 6f 64 65 20 28 77 68 69 63 68 20    61 64 64 65 64 20 7a 6f 6f 6d 69 6e 67 20 73 75  | shr.code.(which.added.zooming.su | 
| 55c0 |  70 70 6f 72 74 29 0a 3b 3b 20 54 4f 44 4f 3a 20    73 75 70 70 6f 72 74 20 77 69 64 74 68 2f 68 65  | pport).;;.TODO:.support.width/he | 
| 55e0 |  69 67 68 74 20 61 73 20 73 75 70 70 6c 69 65 64    20 69 6e 20 69 6d 67 2f 69 6d 61 67 65 2f 73 76  | ight.as.supplied.in.img/image/sv | 
| 5600 |  67 20 61 74 74 72 69 62 75 74 65 73 0a 28 64 65    66 75 6e 20 6e 6f 76 2d 69 6e 73 65 72 74 2d 69  | g.attributes.(defun.nov-insert-i | 
| 5620 |  6d 61 67 65 20 28 70 61 74 68 20 61 6c 74 29 0a    20 20 22 49 6e 73 65 72 74 20 61 6e 20 69 6d 61  | mage.(path.alt)..."Insert.an.ima | 
| 5640 |  67 65 20 66 6f 72 20 50 41 54 48 20 61 74 20 70    6f 69 6e 74 2c 20 66 61 6c 6c 69 6e 67 20 62 61  | ge.for.PATH.at.point,.falling.ba | 
| 5660 |  63 6b 20 74 6f 20 41 4c 54 2e 0a 54 68 69 73 20    66 75 6e 63 74 69 6f 6e 20 68 6f 6e 6f 72 73 20  | ck.to.ALT..This.function.honors. | 
| 5680 |  60 73 68 72 2d 6d 61 78 2d 69 6d 61 67 65 2d 70    72 6f 70 6f 72 74 69 6f 6e 27 20 69 66 20 70 6f  | `shr-max-image-proportion'.if.po | 
| 56a0 |  73 73 69 62 6c 65 2e 22 0a 20 20 28 6c 65 74 20    28 28 74 79 70 65 20 28 69 66 20 28 6f 72 20 28  | ssible."...(let.((type.(if.(or.( | 
| 56c0 |  61 6e 64 20 28 66 62 6f 75 6e 64 70 20 27 69 6d    61 67 65 2d 74 72 61 6e 73 66 6f 72 6d 73 2d 70  | and.(fboundp.'image-transforms-p | 
| 56e0 |  29 20 28 69 6d 61 67 65 2d 74 72 61 6e 73 66 6f    72 6d 73 2d 70 29 29 0a 20 20 20 20 20 20 20 20  | ).(image-transforms-p))......... | 
| 5700 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e    6f 74 20 28 66 62 6f 75 6e 64 70 20 27 69 6d 61  | ..............(not.(fboundp.'ima | 
| 5720 |  67 65 6d 61 67 69 63 6b 2d 74 79 70 65 73 29 29    29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | gemagick-types)))............... | 
| 5740 |  20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 27 69 6d 61 67 65 6d 61  | ....nil.................'imagema | 
| 5760 |  67 69 63 6b 29 29 29 0a 20 20 20 20 28 69 66 20    28 6e 6f 74 20 28 64 69 73 70 6c 61 79 2d 67 72  | gick))).....(if.(not.(display-gr | 
| 5780 |  61 70 68 69 63 2d 70 29 29 0a 20 20 20 20 20 20    20 20 28 69 6e 73 65 72 74 20 61 6c 74 29 0a 20  | aphic-p)).........(insert.alt).. | 
| 57a0 |  20 20 20 20 20 28 73 65 71 2d 6c 65 74 20 28 78    31 20 79 31 20 78 32 20 79 32 29 20 28 77 69 6e  | .....(seq-let.(x1.y1.x2.y2).(win | 
| 57c0 |  64 6f 77 2d 69 6e 73 69 64 65 2d 70 69 78 65 6c    2d 65 64 67 65 73 0a 20 20 20 20 20 20 20 20 20  | dow-inside-pixel-edges.......... | 
| 57e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72  | .....................(get-buffer | 
| 5800 |  2d 77 69 6e 64 6f 77 20 28 63 75 72 72 65 6e 74    2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20  | -window.(current-buffer)))...... | 
| 5820 |  20 20 20 28 6c 65 74 20 28 28 69 6d 61 67 65 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b  | ...(let.((image................; | 
| 5840 |  3b 20 60 63 72 65 61 74 65 2d 69 6d 61 67 65 27    20 65 72 72 6f 72 73 20 6f 75 74 20 66 6f 72 20  | ;.`create-image'.errors.out.for. | 
| 5860 |  75 6e 73 75 70 70 6f 72 74 65 64 20 69 6d 61 67    65 20 74 79 70 65 73 0a 20 20 20 20 20 20 20 20  | unsupported.image.types......... | 
| 5880 |  20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65    72 72 6f 72 73 0a 20 20 20 20 20 20 20 20 20 20  | .......(ignore-errors........... | 
| 58a0 |  20 20 20 20 20 20 20 28 63 72 65 61 74 65 2d 69    6d 61 67 65 20 70 61 74 68 20 74 79 70 65 20 6e  | .......(create-image.path.type.n | 
| 58c0 |  69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | il.............................. | 
| 58e0 |  20 20 3a 61 73 63 65 6e 74 20 31 30 30 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..:ascent.100................... | 
| 5900 |  20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61    78 2d 77 69 64 74 68 20 28 74 72 75 6e 63 61 74  | .............:max-width.(truncat | 
| 5920 |  65 20 28 2a 20 73 68 72 2d 6d 61 78 2d 69 6d 61    67 65 2d 70 72 6f 70 6f 72 74 69 6f 6e 0a 20 20  | e.(*.shr-max-image-proportion... | 
| 5940 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 5960 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 2d 20 78 32 20 78 31 29 29 29  | .....................(-.x2.x1))) | 
| 5980 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 59a0 |  3a 6d 61 78 2d 68 65 69 67 68 74 20 28 74 72 75    6e 63 61 74 65 20 28 2a 20 73 68 72 2d 6d 61 78  | :max-height.(truncate.(*.shr-max | 
| 59c0 |  2d 69 6d 61 67 65 2d 70 72 6f 70 6f 72 74 69 6f    6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -image-proportion............... | 
| 59e0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 5a00 |  20 20 20 20 20 20 20 20 20 20 28 2d 20 79 32 20    79 31 29 29 29 29 29 29 29 0a 20 20 20 20 20 20  | ..........(-.y2.y1)))))))....... | 
| 5a20 |  20 20 20 20 28 69 66 20 69 6d 61 67 65 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73  | ....(if.image...............(ins | 
| 5a40 |  65 72 74 2d 69 6d 61 67 65 20 69 6d 61 67 65 29    0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e  | ert-image.image).............(in | 
| 5a60 |  73 65 72 74 20 61 6c 74 29 29 29 29 29 29 29 0a    0a 28 64 65 66 76 61 72 20 6e 6f 76 2d 6f 72 69  | sert.alt)))))))..(defvar.nov-ori | 
| 5a80 |  67 69 6e 61 6c 2d 73 68 72 2d 74 61 67 2d 69 6d    67 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 28 73 79  | ginal-shr-tag-img-function...(sy | 
| 5aa0 |  6d 62 6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 27 73    68 72 2d 74 61 67 2d 69 6d 67 29 29 0a 0a 28 64  | mbol-function.'shr-tag-img))..(d | 
| 5ac0 |  65 66 75 6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d    69 6d 67 20 28 64 6f 6d 20 26 6f 70 74 69 6f 6e  | efun.nov-render-img.(dom.&option | 
| 5ae0 |  61 6c 20 75 72 6c 29 0a 20 20 22 43 75 73 74 6f    6d 20 3c 69 6d 67 3e 20 72 65 6e 64 65 72 69 6e  | al.url)..."Custom.<img>.renderin | 
| 5b00 |  67 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 44    4f 4d 2e 0a 55 73 65 73 20 60 73 68 72 2d 74 61  | g.function.for.DOM..Uses.`shr-ta | 
| 5b20 |  67 2d 69 6d 67 27 20 66 6f 72 20 65 78 74 65 72    6e 61 6c 20 70 61 74 68 73 20 61 6e 64 20 60 6e  | g-img'.for.external.paths.and.`n | 
| 5b40 |  6f 76 2d 69 6e 73 65 72 74 2d 69 6d 61 67 65 27    20 66 6f 72 0a 69 6e 74 65 72 6e 61 6c 20 6f 6e  | ov-insert-image'.for.internal.on | 
| 5b60 |  65 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 75 72    6c 20 28 6f 72 20 75 72 6c 20 28 63 64 72 20 28  | es."...(let.((url.(or.url.(cdr.( | 
| 5b80 |  61 73 73 71 20 27 73 72 63 20 28 63 61 64 72 20    64 6f 6d 29 29 29 29 29 0a 20 20 20 20 20 20 20  | assq.'src.(cadr.dom)))))........ | 
| 5ba0 |  20 28 61 6c 74 20 28 6f 72 20 28 63 64 72 20 28    61 73 73 71 20 27 61 6c 74 20 28 63 61 64 72 20  | .(alt.(or.(cdr.(assq.'alt.(cadr. | 
| 5bc0 |  64 6f 6d 29 29 29 20 22 22 29 29 29 0a 20 20 20    20 28 69 66 20 28 6e 6f 76 2d 65 78 74 65 72 6e  | dom))).""))).....(if.(nov-extern | 
| 5be0 |  61 6c 2d 75 72 6c 2d 70 20 75 72 6c 29 0a 20 20    20 20 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 61  | al-url-p.url).........;;.HACK:.a | 
| 5c00 |  76 6f 69 64 20 68 61 6e 67 69 6e 67 20 69 6e 20    61 6e 20 69 6e 66 69 6e 69 74 65 20 6c 6f 6f 70  | void.hanging.in.an.infinite.loop | 
| 5c20 |  20 77 68 65 6e 20 75 73 69 6e 67 0a 20 20 20 20    20 20 20 20 3b 3b 20 60 63 6c 2d 6c 65 74 66 27  | .when.using.........;;.`cl-letf' | 
| 5c40 |  20 74 6f 20 6f 76 65 72 72 69 64 65 20 60 73 68    72 2d 74 61 67 2d 69 6d 67 27 20 77 69 74 68 20  | .to.override.`shr-tag-img'.with. | 
| 5c60 |  61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a    20 20 20 20 20 20 20 20 3b 3b 20 6d 69 67 68 74  | a.function.that.........;;.might | 
| 5c80 |  20 63 61 6c 6c 20 60 73 68 72 2d 74 61 67 2d 69    6d 67 27 20 61 67 61 69 6e 0a 20 20 20 20 20 20  | .call.`shr-tag-img'.again....... | 
| 5ca0 |  20 20 28 66 75 6e 63 61 6c 6c 20 6e 6f 76 2d 6f    72 69 67 69 6e 61 6c 2d 73 68 72 2d 74 61 67 2d  | ..(funcall.nov-original-shr-tag- | 
| 5cc0 |  69 6d 67 2d 66 75 6e 63 74 69 6f 6e 20 64 6f 6d    20 75 72 6c 29 0a 20 20 20 20 20 20 28 73 65 74  | img-function.dom.url).......(set | 
| 5ce0 |  71 20 75 72 6c 20 28 65 78 70 61 6e 64 2d 66 69    6c 65 2d 6e 61 6d 65 20 28 6e 6f 76 2d 75 72 6c  | q.url.(expand-file-name.(nov-url | 
| 5d00 |  64 65 63 6f 64 65 20 75 72 6c 29 29 29 0a 20 20    20 20 20 20 28 6e 6f 76 2d 69 6e 73 65 72 74 2d  | decode.url))).......(nov-insert- | 
| 5d20 |  69 6d 61 67 65 20 75 72 6c 20 61 6c 74 29 29 29    29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 2d 72  | image.url.alt))))..(defun.nov--r | 
| 5d40 |  65 6e 64 65 72 2d 69 6d 61 67 65 20 28 64 6f 6d    20 26 6f 70 74 69 6f 6e 61 6c 20 75 72 6c 29 0a  | ender-image.(dom.&optional.url). | 
| 5d60 |  20 20 28 6c 65 74 20 28 28 69 6d 67 2d 74 61 67    20 28 64 6f 6d 2d 6e 6f 64 65 20 27 69 6d 67 0a  | ..(let.((img-tag.(dom-node.'img. | 
| 5d80 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 28 64 6f 6d 2d  | ...........................(dom- | 
| 5da0 |  61 74 74 72 69 62 75 74 65 73 20 64 6f 6d 29 0a    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | attributes.dom)................. | 
| 5dc0 |  20 20 20 20 20 20 20 20 20 20 20 28 64 6f 6d 2d    63 68 69 6c 64 72 65 6e 20 64 6f 6d 29 29 29 29  | ...........(dom-children.dom)))) | 
| 5de0 |  0a 20 20 20 20 28 6e 6f 76 2d 72 65 6e 64 65 72    2d 69 6d 67 20 69 6d 67 2d 74 61 67 20 75 72 6c  | .....(nov-render-img.img-tag.url | 
| 5e00 |  29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d    72 65 6e 64 65 72 2d 73 76 67 20 28 64 6f 6d 29  | )))..(defun.nov-render-svg.(dom) | 
| 5e20 |  0a 20 20 22 43 75 73 74 6f 6d 20 3c 73 76 67 3e    20 72 65 6e 64 65 72 69 6e 67 20 66 75 6e 63 74  | ..."Custom.<svg>.rendering.funct | 
| 5e40 |  69 6f 6e 20 66 6f 72 20 44 4f 4d 2e 0a 49 66 20    74 68 65 20 53 56 47 20 65 6c 65 6d 65 6e 74 20  | ion.for.DOM..If.the.SVG.element. | 
| 5e60 |  6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 73 20 3c 69    6d 61 67 65 3e 20 74 61 67 73 20 77 69 74 68 20  | only.contains.<image>.tags.with. | 
| 5e80 |  61 6e 20 69 6e 74 65 72 6e 61 6c 0a 55 52 4c 2c    20 69 6e 73 65 72 74 20 65 61 63 68 20 69 6d 61  | an.internal.URL,.insert.each.ima | 
| 5ea0 |  67 65 20 77 69 74 68 20 60 6e 6f 76 2d 69 6e 73    65 72 74 2d 69 6d 61 67 65 27 2e 20 4f 74 68 65  | ge.with.`nov-insert-image'..Othe | 
| 5ec0 |  72 77 69 73 65 2c 20 66 61 6c 6c 0a 62 61 63 6b    20 74 6f 20 72 65 67 75 6c 61 72 20 3c 69 6d 67  | rwise,.fall.back.to.regular.<img | 
| 5ee0 |  3e 20 72 65 6e 64 65 72 69 6e 67 20 76 69 61 20    60 6e 6f 76 2d 72 65 6e 64 65 72 2d 69 6d 67 27  | >.rendering.via.`nov-render-img' | 
| 5f00 |  20 28 66 6f 72 0a 65 78 74 65 72 6e 61 6c 20 55    52 4c 73 29 20 6f 72 20 72 65 67 75 6c 61 72 20  | .(for.external.URLs).or.regular. | 
| 5f20 |  53 56 47 20 72 65 6e 64 65 72 69 6e 67 20 76 69    61 20 60 73 68 72 2d 74 61 67 2d 73 76 67 27 2e  | SVG.rendering.via.`shr-tag-svg'. | 
| 5f40 |  22 0a 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28    69 6d 61 67 65 2d 74 79 70 65 2d 61 76 61 69 6c  | "...(when.(and.(image-type-avail | 
| 5f60 |  61 62 6c 65 2d 70 20 27 73 76 67 29 0a 09 20 20    20 20 20 28 6e 6f 74 20 73 68 72 2d 69 6e 68 69  | able-p.'svg).......(not.shr-inhi | 
| 5f80 |  62 69 74 2d 69 6d 61 67 65 73 29 29 0a 20 20 20    20 28 6c 65 74 20 28 28 63 68 69 6c 64 72 65 6e  | bit-images)).....(let.((children | 
| 5fa0 |  20 28 64 6f 6d 2d 63 68 69 6c 64 72 65 6e 20 64    6f 6d 29 29 29 0a 20 20 20 20 20 20 28 69 66 20  | .(dom-children.dom))).......(if. | 
| 5fc0 |  28 73 65 71 2d 65 76 65 72 79 2d 70 20 28 6c 61    6d 62 64 61 20 28 63 68 69 6c 64 29 20 28 65 71  | (seq-every-p.(lambda.(child).(eq | 
| 5fe0 |  20 28 64 6f 6d 2d 74 61 67 20 63 68 69 6c 64 29    20 27 69 6d 61 67 65 29 29 20 63 68 69 6c 64 72  | .(dom-tag.child).'image)).childr | 
| 6000 |  65 6e 29 0a 20 20 20 20 20 20 20 20 20 20 28 64    6f 6c 69 73 74 20 28 69 6d 61 67 65 2d 74 61 67  | en)...........(dolist.(image-tag | 
| 6020 |  20 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 6c 65 74 20 28 28 75 72  | .children).............(let.((ur | 
| 6040 |  6c 20 28 6f 72 20 28 64 6f 6d 2d 61 74 74 72 20    69 6d 61 67 65 2d 74 61 67 20 27 68 72 65 66 29  | l.(or.(dom-attr.image-tag.'href) | 
| 6060 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 6d  | ............................(dom | 
| 6080 |  2d 61 74 74 72 20 69 6d 61 67 65 2d 74 61 67 20    27 78 6c 69 6e 6b 3a 68 72 65 66 29 29 29 29 0a  | -attr.image-tag.'xlink:href)))). | 
| 60a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69    66 20 28 6e 6f 76 2d 65 78 74 65 72 6e 61 6c 2d  | ..............(if.(nov-external- | 
| 60c0 |  75 72 6c 2d 70 20 75 72 6c 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f  | url-p.url)...................(no | 
| 60e0 |  76 2d 2d 72 65 6e 64 65 72 2d 69 6d 61 67 65 20    64 6f 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20  | v--render-image.dom)............ | 
| 6100 |  20 20 20 20 20 28 6e 6f 76 2d 69 6e 73 65 72 74    2d 69 6d 61 67 65 0a 20 20 20 20 20 20 20 20 20  | .....(nov-insert-image.......... | 
| 6120 |  20 20 20 20 20 20 20 20 28 65 78 70 61 6e 64 2d    66 69 6c 65 2d 6e 61 6d 65 20 28 6e 6f 76 2d 75  | ........(expand-file-name.(nov-u | 
| 6140 |  72 6c 64 65 63 6f 64 65 20 75 72 6c 29 29 20 22    22 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 73  | rldecode.url))."")))).........(s | 
| 6160 |  68 72 2d 74 61 67 2d 73 76 67 20 64 6f 6d 29 29    29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d  | hr-tag-svg.dom)))))..(defun.nov- | 
| 6180 |  72 65 6e 64 65 72 2d 74 69 74 6c 65 20 28 64 6f    6d 29 0a 20 20 22 43 75 73 74 6f 6d 20 3c 74 69  | render-title.(dom)..."Custom.<ti | 
| 61a0 |  74 6c 65 3e 20 72 65 6e 64 65 72 69 6e 67 20 66    75 6e 63 74 69 6f 6e 20 66 6f 72 20 44 4f 4d 2e  | tle>.rendering.function.for.DOM. | 
| 61c0 |  0a 53 65 74 73 20 60 68 65 61 64 65 72 2d 6c 69    6e 65 2d 66 6f 72 6d 61 74 27 20 61 63 63 6f 72  | .Sets.`header-line-format'.accor | 
| 61e0 |  64 69 6e 67 20 74 6f 20 60 6e 6f 76 2d 68 65 61    64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 27  | ding.to.`nov-header-line-format' | 
| 6200 |  2e 22 0a 20 20 28 73 65 74 71 20 68 65 61 64 65    72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 09 28  | ."...(setq.header-line-format..( | 
| 6220 |  61 6e 64 20 6e 6f 76 2d 68 65 61 64 65 72 2d 6c    69 6e 65 2d 66 6f 72 6d 61 74 0a 09 20 20 20 20  | and.nov-header-line-format...... | 
| 6240 |  20 28 6c 65 74 20 28 28 74 69 74 6c 65 20 28 63    64 72 20 28 61 73 73 71 20 27 74 69 74 6c 65 20  | .(let.((title.(cdr.(assq.'title. | 
| 6260 |  6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 29 29 0a    09 09 20 20 20 28 63 68 61 70 74 65 72 2d 74 69  | nov-metadata)))......(chapter-ti | 
| 6280 |  74 6c 65 20 28 63 61 72 20 28 64 6f 6d 2d 63 68    69 6c 64 72 65 6e 20 64 6f 6d 29 29 29 29 0a 09  | tle.(car.(dom-children.dom)))).. | 
| 62a0 |  20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f    74 20 63 68 61 70 74 65 72 2d 74 69 74 6c 65 29  | .......(when.(not.chapter-title) | 
| 62c0 |  0a 09 09 20 28 73 65 74 71 20 63 68 61 70 74 65    72 2d 74 69 74 6c 65 20 28 70 72 6f 70 65 72 74  | ....(setq.chapter-title.(propert | 
| 62e0 |  69 7a 65 20 22 4e 6f 20 74 69 74 6c 65 22 20 27    66 61 63 65 20 27 69 74 61 6c 69 63 29 29 29 0a  | ize."No.title".'face.'italic))). | 
| 6300 |  09 20 20 20 20 20 20 20 3b 3b 20 74 68 69 73 20    73 68 6f 75 6c 64 6e 27 74 20 68 61 70 70 65 6e  | ........;;.this.shouldn't.happen | 
| 6320 |  20 66 6f 72 20 70 72 6f 70 65 72 6c 79 20 61 75    74 68 6f 72 65 64 20 45 50 55 42 73 0a 09 20 20  | .for.properly.authored.EPUBs.... | 
| 6340 |  20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20    74 69 74 6c 65 29 0a 09 09 20 28 73 65 74 71 20  | .....(when.(not.title)....(setq. | 
| 6360 |  74 69 74 6c 65 20 28 70 72 6f 70 65 72 74 69 7a    65 20 22 4e 6f 20 74 69 74 6c 65 22 20 27 66 61  | title.(propertize."No.title".'fa | 
| 6380 |  63 65 20 27 69 74 61 6c 69 63 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65  | ce.'italic)))................(re | 
| 63a0 |  70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d    73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20  | place-regexp-in-string.......... | 
| 63c0 |  20 20 20 20 20 20 20 22 25 22 20 22 25 25 22 0a    09 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74  | ......."%"."%%"..........(format | 
| 63e0 |  2d 73 70 65 63 0a 09 09 20 6e 6f 76 2d 68 65 61    64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a  | -spec....nov-header-line-format. | 
| 6400 |  09 09 20 60 28 28 3f 63 20 2e 20 2c 63 68 61 70    74 65 72 2d 74 69 74 6c 65 29 0a 09 09 20 20 20  | ...`((?c...,chapter-title)...... | 
| 6420 |  28 3f 74 20 2e 20 2c 74 69 74 6c 65 29 29 29 29    29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 6e 6f  | (?t...,title))))))))..(defvar.no | 
| 6440 |  76 2d 73 68 72 2d 72 65 6e 64 65 72 69 6e 67 2d    66 75 6e 63 74 69 6f 6e 73 0a 20 20 27 28 3b 3b  | v-shr-rendering-functions...'(;; | 
| 6460 |  20 64 65 66 61 75 6c 74 20 66 75 6e 63 74 69 6f    6e 20 75 73 65 73 20 75 72 6c 2d 72 65 74 72 69  | .default.function.uses.url-retri | 
| 6480 |  65 76 65 20 61 6e 64 20 66 61 69 6c 73 20 6f 6e    20 6c 6f 63 61 6c 20 69 6d 61 67 65 73 0a 20 20  | eve.and.fails.on.local.images... | 
| 64a0 |  20 20 28 69 6d 67 20 2e 20 6e 6f 76 2d 72 65 6e    64 65 72 2d 69 6d 67 29 0a 20 20 20 20 3b 3b 20  | ..(img...nov-render-img).....;;. | 
| 64c0 |  6c 69 6b 65 77 69 73 65 2c 20 62 75 74 20 66 6f    72 20 53 56 47 20 74 61 67 73 20 63 6f 6e 74 61  | likewise,.but.for.SVG.tags.conta | 
| 64e0 |  69 6e 69 6e 67 20 6c 6f 63 61 6c 20 69 6d 61 67    65 73 0a 20 20 20 20 28 73 76 67 20 2e 20 6e 6f  | ining.local.images.....(svg...no | 
| 6500 |  76 2d 72 65 6e 64 65 72 2d 73 76 67 29 0a 20 20    20 20 3b 3b 20 74 69 74 6c 65 73 20 61 72 65 20  | v-render-svg).....;;.titles.are. | 
| 6520 |  72 65 6e 64 65 72 65 64 20 2a 69 6e 73 69 64 65    2a 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 62  | rendered.*inside*.the.document.b | 
| 6540 |  79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 28 74    69 74 6c 65 20 2e 20 6e 6f 76 2d 72 65 6e 64 65  | y.default.....(title...nov-rende | 
| 6560 |  72 2d 74 69 74 6c 65 29 29 0a 20 20 22 41 6c 69    73 74 20 6f 66 20 72 65 6e 64 65 72 69 6e 67 20  | r-title))..."Alist.of.rendering. | 
| 6580 |  66 75 6e 63 74 69 6f 6e 73 20 75 73 65 64 20 77    69 74 68 20 60 73 68 72 2d 72 65 6e 64 65 72 2d  | functions.used.with.`shr-render- | 
| 65a0 |  72 65 67 69 6f 6e 27 2e 22 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 66 69 6c 6c 2d 6c 69 6e 65  | region'.")..(defun.nov-fill-line | 
| 65c0 |  20 28 29 0a 20 20 22 4c 69 6b 65 20 60 73 68 72    2d 66 69 6c 6c 2d 6c 69 6e 65 27 2c 20 62 75 74  | .()..."Like.`shr-fill-line',.but | 
| 65e0 |  20 6f 6e 6c 79 20 70 65 72 66 6f 72 6d 69 6e 67    20 69 6e 64 65 6e 74 61 74 69 6f 6e 2e 0a 54 6f  | .only.performing.indentation..To | 
| 6600 |  20 62 65 20 75 73 65 64 20 77 68 65 6e 20 60 6e    6f 76 2d 74 65 78 74 2d 77 69 64 74 68 27 20 69  | .be.used.when.`nov-text-width'.i | 
| 6620 |  73 20 73 65 74 20 74 6f 20 74 2e 22 0a 20 20 28    6c 65 74 20 28 28 73 68 72 2d 69 6e 64 65 6e 74  | s.set.to.t."...(let.((shr-indent | 
| 6640 |  61 74 69 6f 6e 20 28 6f 72 20 28 67 65 74 2d 74    65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f  | ation.(or.(get-text-property.(po | 
| 6660 |  69 6e 74 29 20 27 73 68 72 2d 69 6e 64 65 6e 74    61 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20  | int).'shr-indentation).......... | 
| 6680 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 73 68 72 2d 69 6e 64 65 6e 74 61 74  | ....................shr-indentat | 
| 66a0 |  69 6f 6e 29 29 29 0a 20 20 20 20 28 70 75 74 2d    74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70  | ion))).....(put-text-property.(p | 
| 66c0 |  6f 69 6e 74 29 20 28 31 2b 20 28 70 6f 69 6e 74    29 29 20 27 73 68 72 2d 69 6e 64 65 6e 74 61 74  | oint).(1+.(point)).'shr-indentat | 
| 66e0 |  69 6f 6e 20 6e 69 6c 29 0a 20 20 20 20 28 6c 65    74 20 28 28 66 61 63 65 20 28 67 65 74 2d 74 65  | ion.nil).....(let.((face.(get-te | 
| 6700 |  78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69    6e 74 29 20 27 66 61 63 65 29 29 0a 09 20 20 28  | xt-property.(point).'face))....( | 
| 6720 |  62 61 63 6b 67 72 6f 75 6e 64 2d 73 74 61 72 74    20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20  | background-start.(point)))...... | 
| 6740 |  20 28 73 68 72 2d 69 6e 64 65 6e 74 29 0a 20 20    20 20 20 20 28 77 68 65 6e 20 66 61 63 65 0a 09  | .(shr-indent).......(when.face.. | 
| 6760 |  28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72    74 79 20 62 61 63 6b 67 72 6f 75 6e 64 2d 73 74  | (put-text-property.background-st | 
| 6780 |  61 72 74 20 28 70 6f 69 6e 74 29 20 27 66 61 63    65 0a 09 09 09 20 20 20 60 2c 28 73 68 72 2d 66  | art.(point).'face.......`,(shr-f | 
| 67a0 |  61 63 65 2d 62 61 63 6b 67 72 6f 75 6e 64 20 66    61 63 65 29 29 29 29 29 29 0a 0a 28 64 65 66 75  | ace-background.face))))))..(defu | 
| 67c0 |  6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 68 74 6d    6c 20 28 29 0a 20 20 22 52 65 6e 64 65 72 20 48  | n.nov-render-html.()..."Render.H | 
| 67e0 |  54 4d 4c 20 69 6e 20 63 75 72 72 65 6e 74 20 62    75 66 66 65 72 20 77 69 74 68 20 73 68 72 2e 22  | TML.in.current.buffer.with.shr." | 
| 6800 |  0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 6e    6f 76 2d 70 72 65 2d 68 74 6d 6c 2d 72 65 6e 64  | ...(run-hooks.'nov-pre-html-rend | 
| 6820 |  65 72 2d 68 6f 6f 6b 29 0a 20 20 28 6c 65 74 20    28 3b 3b 20 48 41 43 4b 3a 20 6d 61 6b 65 20 62  | er-hook)...(let.(;;.HACK:.make.b | 
| 6840 |  75 74 74 6f 6e 73 20 75 73 65 20 6f 75 72 20 6f    77 6e 20 63 6f 6d 6d 61 6e 64 73 0a 20 20 20 20  | uttons.use.our.own.commands..... | 
| 6860 |  20 20 20 20 28 73 68 72 2d 6d 61 70 20 6e 6f 76    2d 62 75 74 74 6f 6e 2d 6d 61 70 29 0a 20 20 20  | ....(shr-map.nov-button-map).... | 
| 6880 |  20 20 20 20 20 28 73 68 72 2d 65 78 74 65 72 6e    61 6c 2d 72 65 6e 64 65 72 69 6e 67 2d 66 75 6e  | .....(shr-external-rendering-fun | 
| 68a0 |  63 74 69 6f 6e 73 20 6e 6f 76 2d 73 68 72 2d 72    65 6e 64 65 72 69 6e 67 2d 66 75 6e 63 74 69 6f  | ctions.nov-shr-rendering-functio | 
| 68c0 |  6e 73 29 0a 20 20 20 20 20 20 20 20 28 73 68 72    2d 75 73 65 2d 66 6f 6e 74 73 20 6e 6f 76 2d 76  | ns).........(shr-use-fonts.nov-v | 
| 68e0 |  61 72 69 61 62 6c 65 2d 70 69 74 63 68 29 0a 20    20 20 20 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20  | ariable-pitch).........;;.HACK:. | 
| 6900 |  70 72 65 73 65 72 76 65 20 60 74 72 75 6e 63 61    74 65 2d 6c 69 6e 65 73 27 20 66 6f 72 20 60 76  | preserve.`truncate-lines'.for.`v | 
| 6920 |  69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 27    20 74 6f 0a 20 20 20 20 20 20 20 20 3b 3b 20 77  | isual-line-mode'.to.........;;.w | 
| 6940 |  6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 61 66    74 65 72 20 61 20 74 61 62 6c 65 20 68 61 73 20  | ork.correctly.after.a.table.has. | 
| 6960 |  62 65 65 6e 20 72 65 6e 64 65 72 65 64 2e 2e 2e    0a 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61  | been.rendered............(trunca | 
| 6980 |  74 65 2d 6c 69 6e 65 73 20 74 72 75 6e 63 61 74    65 2d 6c 69 6e 65 73 29 29 0a 20 20 20 20 3b 3b  | te-lines.truncate-lines)).....;; | 
| 69a0 |  20 48 41 43 4b 3a 20 60 73 68 72 2d 65 78 74 65    72 6e 61 6c 2d 72 65 6e 64 65 72 69 6e 67 2d 66  | .HACK:.`shr-external-rendering-f | 
| 69c0 |  75 6e 63 74 69 6f 6e 73 27 20 64 6f 65 73 6e 27    74 20 63 6f 76 65 72 0a 20 20 20 20 3b 3b 20 65  | unctions'.doesn't.cover.....;;.e | 
| 69e0 |  76 65 72 79 20 75 73 61 67 65 20 6f 66 20 60 73    68 72 2d 74 61 67 2d 69 6d 67 27 0a 20 20 20 20  | very.usage.of.`shr-tag-img'..... | 
| 6a00 |  28 63 6c 2d 6c 65 74 66 20 28 28 28 73 79 6d 62    6f 6c 2d 66 75 6e 63 74 69 6f 6e 20 27 73 68 72  | (cl-letf.(((symbol-function.'shr | 
| 6a20 |  2d 74 61 67 2d 69 6d 67 29 20 27 6e 6f 76 2d 72    65 6e 64 65 72 2d 69 6d 67 29 29 0a 20 20 20 20  | -tag-img).'nov-render-img))..... | 
| 6a40 |  20 20 28 69 66 20 28 65 71 20 6e 6f 76 2d 74 65    78 74 2d 77 69 64 74 68 20 74 29 0a 20 20 20 20  | ..(if.(eq.nov-text-width.t)..... | 
| 6a60 |  20 20 20 20 20 20 28 63 6c 2d 6c 65 74 66 20 28    28 28 73 79 6d 62 6f 6c 2d 66 75 6e 63 74 69 6f  | ......(cl-letf.(((symbol-functio | 
| 6a80 |  6e 20 27 73 68 72 2d 66 69 6c 6c 2d 6c 69 6e 65    29 20 23 27 6e 6f 76 2d 66 69 6c 6c 2d 6c 69 6e  | n.'shr-fill-line).#'nov-fill-lin | 
| 6aa0 |  65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    28 73 68 72 2d 72 65 6e 64 65 72 2d 72 65 67 69  | e)).............(shr-render-regi | 
| 6ac0 |  6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28    70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20  | on.(point-min).(point-max))).... | 
| 6ae0 |  20 20 20 20 20 28 6c 65 74 20 28 28 73 68 72 2d    77 69 64 74 68 20 6e 6f 76 2d 74 65 78 74 2d 77  | .....(let.((shr-width.nov-text-w | 
| 6b00 |  69 64 74 68 29 29 0a 20 20 20 20 20 20 20 20 20    20 28 73 68 72 2d 72 65 6e 64 65 72 2d 72 65 67  | idth))...........(shr-render-reg | 
| 6b20 |  69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20    28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29  | ion.(point-min).(point-max)))))) | 
| 6b40 |  0a 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 6e    6f 76 2d 70 6f 73 74 2d 68 74 6d 6c 2d 72 65 6e  | ...(run-hooks.'nov-post-html-ren | 
| 6b60 |  64 65 72 2d 68 6f 6f 6b 29 29 0a 0a 28 64 65 66    75 6e 20 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f  | der-hook))..(defun.nov-render-do | 
| 6b80 |  63 75 6d 65 6e 74 20 28 29 0a 20 20 22 52 65 6e    64 65 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74  | cument.()..."Render.the.document | 
| 6ba0 |  20 72 65 66 65 72 65 6e 63 65 64 20 62 79 20 60    6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e  | .referenced.by.`nov-documents-in | 
| 6bc0 |  64 65 78 27 2e 0a 49 66 20 74 68 65 20 64 6f 63    75 6d 65 6e 74 20 70 61 74 68 20 72 65 66 65 72  | dex'..If.the.document.path.refer | 
| 6be0 |  73 20 74 6f 20 61 6e 20 69 6d 61 67 65 20 28 61    73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 0a  | s.to.an.image.(as.determined.by. | 
| 6c00 |  60 69 6d 61 67 65 2d 74 79 70 65 2d 66 69 6c 65    2d 6e 61 6d 65 2d 72 65 67 65 78 70 73 27 29 2c  | `image-type-file-name-regexps'), | 
| 6c20 |  20 61 6e 20 69 6d 61 67 65 20 69 73 20 69 6e 73    65 72 74 65 64 2c 20 6f 74 68 65 72 77 69 73 65  | .an.image.is.inserted,.otherwise | 
| 6c40 |  0a 74 68 65 20 48 54 4d 4c 20 69 73 20 72 65 6e    64 65 72 65 64 20 77 69 74 68 20 60 6e 6f 76 2d  | .the.HTML.is.rendered.with.`nov- | 
| 6c60 |  72 65 6e 64 65 72 2d 68 74 6d 6c 2d 66 75 6e 63    74 69 6f 6e 27 2e 22 0a 20 20 28 69 6e 74 65 72  | render-html-function'."...(inter | 
| 6c80 |  61 63 74 69 76 65 29 0a 20 20 28 73 65 71 2d 6c    65 74 20 28 69 64 20 26 72 65 73 74 20 70 61 74  | active)...(seq-let.(id.&rest.pat | 
| 6ca0 |  68 29 20 28 61 72 65 66 20 6e 6f 76 2d 64 6f 63    75 6d 65 6e 74 73 20 6e 6f 76 2d 64 6f 63 75 6d  | h).(aref.nov-documents.nov-docum | 
| 6cc0 |  65 6e 74 73 2d 69 6e 64 65 78 29 0a 20 20 20 20    28 6c 65 74 20 28 3b 3b 20 48 41 43 4b 3a 20 74  | ents-index).....(let.(;;.HACK:.t | 
| 6ce0 |  68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 6c 6f    6f 6b 65 64 20 75 70 20 69 6e 20 74 68 65 20 6d  | his.should.be.looked.up.in.the.m | 
| 6d00 |  61 6e 69 66 65 73 74 0a 20 20 20 20 20 20 20 20    20 20 28 69 6d 61 67 65 70 20 28 73 65 71 2d 66  | anifest...........(imagep.(seq-f | 
| 6d20 |  69 6e 64 20 28 6c 61 6d 62 64 61 20 28 69 74 65    6d 29 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68  | ind.(lambda.(item).(string-match | 
| 6d40 |  2d 70 20 28 63 61 72 20 69 74 65 6d 29 20 70 61    74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20  | -p.(car.item).path))............ | 
| 6d60 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 69 6d 61 67 65 2d 74 79 70 65 2d 66 69 6c 65  | .................image-type-file | 
| 6d80 |  2d 6e 61 6d 65 2d 72 65 67 65 78 70 73 29 29 0a    20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54  | -name-regexps))...........;;.NOT | 
| 6da0 |  45 3a 20 61 6c 6c 6f 77 73 20 72 65 73 6f 6c 76    69 6e 67 20 69 6d 61 67 65 20 72 65 66 65 72 65  | E:.allows.resolving.image.refere | 
| 6dc0 |  6e 63 65 73 20 63 6f 72 72 65 63 74 6c 79 0a 20    20 20 20 20 20 20 20 20 20 28 64 65 66 61 75 6c  | nces.correctly...........(defaul | 
| 6de0 |  74 2d 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c    65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79  | t-directory.(file-name-directory | 
| 6e00 |  20 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20    20 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e  | .path))...........buffer-read-on | 
| 6e20 |  6c 79 29 0a 20 20 20 20 20 20 28 65 72 61 73 65    2d 62 75 66 66 65 72 29 0a 0a 20 20 20 20 20 20  | ly).......(erase-buffer)........ | 
| 6e40 |  28 63 6f 6e 64 0a 20 20 20 20 20 20 20 28 69 6d    61 67 65 70 0a 20 20 20 20 20 20 20 20 28 6e 6f  | (cond........(imagep.........(no | 
| 6e60 |  76 2d 69 6e 73 65 72 74 2d 69 6d 61 67 65 20 70    61 74 68 20 22 22 29 29 0a 20 20 20 20 20 20 20  | v-insert-image.path.""))........ | 
| 6e80 |  28 28 61 6e 64 20 28 76 65 72 73 69 6f 6e 3c 20    6e 6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e  | ((and.(version<.nov-epub-version | 
| 6ea0 |  20 22 33 2e 30 22 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 28 65 71 20 69 64 20 6e 6f 76 2d  | ."3.0")..............(eq.id.nov- | 
| 6ec0 |  74 6f 63 2d 69 64 29 29 0a 20 20 20 20 20 20 20    20 28 69 6e 73 65 72 74 20 28 6e 6f 76 2d 6e 63  | toc-id)).........(insert.(nov-nc | 
| 6ee0 |  78 2d 74 6f 2d 68 74 6d 6c 20 70 61 74 68 29 29    29 0a 20 20 20 20 20 20 20 28 74 0a 20 20 20 20  | x-to-html.path)))........(t..... | 
| 6f00 |  20 20 20 20 28 69 6e 73 65 72 74 20 28 6e 6f 76    2d 73 6c 75 72 70 20 70 61 74 68 29 29 29 29 0a  | ....(insert.(nov-slurp.path)))). | 
| 6f20 |  0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f    74 20 69 6d 61 67 65 70 29 0a 20 20 20 20 20 20  | .......(when.(not.imagep)....... | 
| 6f40 |  20 20 28 66 75 6e 63 61 6c 6c 20 6e 6f 76 2d 72    65 6e 64 65 72 2d 68 74 6d 6c 2d 66 75 6e 63 74  | ..(funcall.nov-render-html-funct | 
| 6f60 |  69 6f 6e 29 29 0a 20 20 20 20 20 20 3b 3b 20 4e    4f 54 45 3a 20 74 68 69 73 20 69 73 20 68 6f 77  | ion)).......;;.NOTE:.this.is.how | 
| 6f80 |  20 64 6f 63 2d 76 69 65 77 20 61 76 6f 69 64 73    20 6f 76 65 72 77 72 69 74 69 6e 67 20 74 68 65  | .doc-view.avoids.overwriting.the | 
| 6fa0 |  20 66 69 6c 65 0a 20 20 20 20 20 20 28 73 65 74    2d 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64  | .file.......(set-buffer-modified | 
| 6fc0 |  2d 70 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 67    6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d  | -p.nil).......(goto-char.(point- | 
| 6fe0 |  6d 69 6e 29 29 29 29 29 0a 0a 28 64 65 66 75 6e    20 6e 6f 76 2d 66 69 6e 64 2d 64 6f 63 75 6d 65  | min)))))..(defun.nov-find-docume | 
| 7000 |  6e 74 20 28 70 72 65 64 69 63 61 74 65 29 0a 20    20 22 52 65 74 75 72 6e 20 66 69 72 73 74 20 69  | nt.(predicate)..."Return.first.i | 
| 7020 |  74 65 6d 20 69 6e 20 60 6e 6f 76 2d 64 6f 63 75    6d 65 6e 74 73 27 20 50 52 45 44 49 43 41 54 45  | tem.in.`nov-documents'.PREDICATE | 
| 7040 |  20 69 73 20 74 72 75 65 20 66 6f 72 2e 22 0a 20    20 28 6c 65 74 20 28 28 69 20 30 29 0a 20 20 20  | .is.true.for."...(let.((i.0).... | 
| 7060 |  20 20 20 20 20 64 6f 6e 65 29 0a 20 20 20 20 28    77 68 69 6c 65 20 28 61 6e 64 20 28 6e 6f 74 20  | .....done).....(while.(and.(not. | 
| 7080 |  64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 28 3c 20 69 20 28 6c 65 6e 67  | done).................(<.i.(leng | 
| 70a0 |  74 68 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73    29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20  | th.nov-documents))).......(when. | 
| 70c0 |  28 66 75 6e 63 61 6c 6c 20 70 72 65 64 69 63 61    74 65 20 28 61 72 65 66 20 6e 6f 76 2d 64 6f 63  | (funcall.predicate.(aref.nov-doc | 
| 70e0 |  75 6d 65 6e 74 73 20 69 29 29 0a 20 20 20 20 20    20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 29  | uments.i)).........(setq.done.t) | 
| 7100 |  29 0a 20 20 20 20 20 20 28 73 65 74 71 20 69 20    28 31 2b 20 69 29 29 29 0a 20 20 20 20 28 77 68  | ).......(setq.i.(1+.i))).....(wh | 
| 7120 |  65 6e 20 64 6f 6e 65 0a 20 20 20 20 20 20 28 31    2d 20 69 29 29 29 29 0a 0a 28 64 65 66 75 6e 20  | en.done.......(1-.i))))..(defun. | 
| 7140 |  6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e    74 20 28 69 6e 64 65 78 29 0a 20 20 22 47 6f 20  | nov-goto-document.(index)..."Go. | 
| 7160 |  74 6f 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20    64 65 6e 6f 74 65 64 20 62 79 20 49 4e 44 45 58  | to.the.document.denoted.by.INDEX | 
| 7180 |  2e 22 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74    6f 72 79 20 28 63 6f 6e 73 20 28 6c 69 73 74 20  | ."...(let.((history.(cons.(list. | 
| 71a0 |  6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e    64 65 78 20 28 70 6f 69 6e 74 29 29 0a 20 20 20  | nov-documents-index.(point)).... | 
| 71c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 6e 6f 76 2d 68 69 73 74 6f 72 79 29  | ....................nov-history) | 
| 71e0 |  29 29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76    2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78  | )).....(setq.nov-documents-index | 
| 7200 |  20 69 6e 64 65 78 29 0a 20 20 20 20 28 6e 6f 76    2d 72 65 6e 64 65 72 2d 64 6f 63 75 6d 65 6e 74  | .index).....(nov-render-document | 
| 7220 |  29 0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d    68 69 73 74 6f 72 79 20 68 69 73 74 6f 72 79 29  | ).....(setq.nov-history.history) | 
| 7240 |  29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 67    6f 74 6f 2d 74 6f 63 20 28 29 0a 20 20 22 47 6f  | ))..(defun.nov-goto-toc.()..."Go | 
| 7260 |  20 74 6f 20 74 68 65 20 54 4f 43 20 69 6e 64 65    78 20 61 6e 64 20 72 65 6e 64 65 72 20 74 68 65  | .to.the.TOC.index.and.render.the | 
| 7280 |  20 54 4f 43 20 64 6f 63 75 6d 65 6e 74 2e 22 0a    20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a  | .TOC.document."...(interactive). | 
| 72a0 |  20 20 28 6c 65 74 20 28 28 69 6e 64 65 78 20 28    6e 6f 76 2d 66 69 6e 64 2d 64 6f 63 75 6d 65 6e  | ..(let.((index.(nov-find-documen | 
| 72c0 |  74 20 28 6c 61 6d 62 64 61 20 28 64 6f 63 29 20    28 65 71 20 28 63 61 72 20 64 6f 63 29 20 6e 6f  | t.(lambda.(doc).(eq.(car.doc).no | 
| 72e0 |  76 2d 74 6f 63 2d 69 64 29 29 29 29 29 0a 20 20    20 20 28 77 68 65 6e 20 28 6e 6f 74 20 69 6e 64  | v-toc-id))))).....(when.(not.ind | 
| 7300 |  65 78 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72    20 22 43 6f 75 6c 64 6e 27 74 20 6c 6f 63 61 74  | ex).......(error."Couldn't.locat | 
| 7320 |  65 20 54 4f 43 22 29 29 0a 20 20 20 20 28 6e 6f    76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e 74 20  | e.TOC")).....(nov-goto-document. | 
| 7340 |  69 6e 64 65 78 29 29 29 0a 0a 28 64 65 66 75 6e    20 6e 6f 76 2d 76 69 65 77 2d 73 6f 75 72 63 65  | index)))..(defun.nov-view-source | 
| 7360 |  20 28 29 0a 20 20 22 56 69 65 77 20 74 68 65 20    73 6f 75 72 63 65 20 6f 66 20 74 68 65 20 63 75  | .()..."View.the.source.of.the.cu | 
| 7380 |  72 72 65 6e 74 20 64 6f 63 75 6d 65 6e 74 20 69    6e 20 61 20 6e 65 77 20 62 75 66 66 65 72 2e 22  | rrent.document.in.a.new.buffer." | 
| 73a0 |  0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29    0a 20 20 28 66 69 6e 64 2d 66 69 6c 65 20 28 63  | ...(interactive)...(find-file.(c | 
| 73c0 |  64 72 20 28 61 72 65 66 20 6e 6f 76 2d 64 6f 63    75 6d 65 6e 74 73 20 6e 6f 76 2d 64 6f 63 75 6d  | dr.(aref.nov-documents.nov-docum | 
| 73e0 |  65 6e 74 73 2d 69 6e 64 65 78 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 6e 6f 76 2d 76 69 65 77 2d  | ents-index))))..(defun.nov-view- | 
| 7400 |  63 6f 6e 74 65 6e 74 2d 73 6f 75 72 63 65 20 28    29 0a 20 20 22 56 69 65 77 20 74 68 65 20 73 6f  | content-source.()..."View.the.so | 
| 7420 |  75 72 63 65 20 6f 66 20 74 68 65 20 63 6f 6e 74    65 6e 74 20 66 69 6c 65 20 69 6e 20 61 20 6e 65  | urce.of.the.content.file.in.a.ne | 
| 7440 |  77 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e    74 65 72 61 63 74 69 76 65 29 0a 20 20 28 66 69  | w.buffer."...(interactive)...(fi | 
| 7460 |  6e 64 2d 66 69 6c 65 20 6e 6f 76 2d 63 6f 6e 74    65 6e 74 2d 66 69 6c 65 29 29 0a 0a 28 64 65 66  | nd-file.nov-content-file))..(def | 
| 7480 |  75 6e 20 6e 6f 76 2d 72 65 6f 70 65 6e 2d 61 73    2d 61 72 63 68 69 76 65 20 28 29 0a 20 20 22 52  | un.nov-reopen-as-archive.()..."R | 
| 74a0 |  65 6f 70 65 6e 20 74 68 65 20 45 50 55 42 20 64    6f 63 75 6d 65 6e 74 20 75 73 69 6e 67 20 60 61  | eopen.the.EPUB.document.using.`a | 
| 74c0 |  72 63 68 69 76 65 2d 6d 6f 64 65 27 2e 22 0a 20    20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20  | rchive-mode'."...(interactive).. | 
| 74e0 |  20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62    75 66 66 65 72 20 28 66 69 6e 64 2d 66 69 6c 65  | .(with-current-buffer.(find-file | 
| 7500 |  2d 6c 69 74 65 72 61 6c 6c 79 20 6e 6f 76 2d 66    69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 28 61  | -literally.nov-file-name).....(a | 
| 7520 |  72 63 68 69 76 65 2d 6d 6f 64 65 29 29 29 0a 0a    28 64 65 66 75 6e 20 6e 6f 76 2d 64 69 73 70 6c  | rchive-mode)))..(defun.nov-displ | 
| 7540 |  61 79 2d 6d 65 74 61 64 61 74 61 20 28 29 0a 20    20 22 56 69 65 77 20 74 68 65 20 6d 65 74 61 64  | ay-metadata.()..."View.the.metad | 
| 7560 |  61 74 61 20 6f 66 20 74 68 65 20 45 50 55 42 20    64 6f 63 75 6d 65 6e 74 20 69 6e 20 61 20 6e 65  | ata.of.the.EPUB.document.in.a.ne | 
| 7580 |  77 20 62 75 66 66 65 72 2e 22 0a 20 20 28 69 6e    74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65  | w.buffer."...(interactive)...(le | 
| 75a0 |  74 20 28 28 62 75 66 66 65 72 20 22 2a 45 50 55    42 20 6d 65 74 61 64 61 74 61 2a 22 29 0a 20 20  | t.((buffer."*EPUB.metadata*")... | 
| 75c0 |  20 20 20 20 20 20 28 6d 65 74 61 64 61 74 61 20    6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 0a 20 20  | ......(metadata.nov-metadata)... | 
| 75e0 |  20 20 20 20 20 20 28 76 65 72 73 69 6f 6e 20 6e    6f 76 2d 65 70 75 62 2d 76 65 72 73 69 6f 6e 29  | ......(version.nov-epub-version) | 
| 7600 |  29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72    65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d  | ).....(with-current-buffer.(get- | 
| 7620 |  62 75 66 66 65 72 2d 63 72 65 61 74 65 20 62 75    66 66 65 72 29 0a 20 20 20 20 20 20 28 73 70 65  | buffer-create.buffer).......(spe | 
| 7640 |  63 69 61 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20    20 28 6c 65 74 20 28 62 75 66 66 65 72 2d 72 65  | cial-mode).......(let.(buffer-re | 
| 7660 |  61 64 2d 6f 6e 6c 79 29 0a 20 20 20 20 20 20 20    20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a  | ad-only).........(erase-buffer). | 
| 7680 |  20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20    28 66 6f 72 6d 61 74 20 22 45 50 55 42 20 56 65  | ........(insert.(format."EPUB.Ve | 
| 76a0 |  72 73 69 6f 6e 3a 20 25 73 5c 6e 22 20 76 65 72    73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 28  | rsion:.%s\n".version)).........( | 
| 76c0 |  64 6f 6c 69 73 74 20 28 69 74 65 6d 20 6d 65 74    61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20  | dolist.(item.metadata).......... | 
| 76e0 |  20 28 73 65 71 2d 6c 65 74 20 28 6b 65 79 20 26    72 65 73 74 20 76 61 6c 75 65 29 20 69 74 65 6d  | .(seq-let.(key.&rest.value).item | 
| 7700 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e    73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 73  | .............(insert.(format."%s | 
| 7720 |  3a 20 22 20 28 63 61 70 69 74 61 6c 69 7a 65 20    28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6b 65 79  | :.".(capitalize.(symbol-name.key | 
| 7740 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20  | )))).............(if.value...... | 
| 7760 |  20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28    65 71 20 6b 65 79 20 27 64 65 73 63 72 69 70 74  | ...........(if.(eq.key.'descript | 
| 7780 |  69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28  | ion).....................(let.(( | 
| 77a0 |  62 65 67 20 28 70 6f 69 6e 74 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | beg.(point)))................... | 
| 77c0 |  20 20 20 20 28 69 6e 73 65 72 74 20 76 61 6c 75    65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  | ....(insert.value).............. | 
| 77e0 |  20 20 20 20 20 20 20 20 20 28 73 68 72 2d 72 65    6e 64 65 72 2d 72 65 67 69 6f 6e 20 62 65 67 20  | .........(shr-render-region.beg. | 
| 7800 |  28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73  | (point)))...................(ins | 
| 7820 |  65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 73 22    20 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20  | ert.(format."%s".value)))....... | 
| 7840 |  20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20    28 70 72 6f 70 65 72 74 69 7a 65 20 22 4e 6f 6e  | ........(insert.(propertize."Non | 
| 7860 |  65 22 20 27 66 61 63 65 20 27 69 74 61 6c 69 63    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | e".'face.'italic)))............. | 
| 7880 |  28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 29 0a    20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68  | (insert."\n"))).........(goto-ch | 
| 78a0 |  61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29    29 0a 20 20 20 20 28 70 6f 70 2d 74 6f 2d 62 75  | ar.(point-min)))).....(pop-to-bu | 
| 78c0 |  66 66 65 72 20 62 75 66 66 65 72 29 29 29 0a 0a    28 64 65 66 75 6e 20 6e 6f 76 2d 6e 65 78 74 2d  | ffer.buffer)))..(defun.nov-next- | 
| 78e0 |  64 6f 63 75 6d 65 6e 74 20 28 26 6f 70 74 69 6f    6e 61 6c 20 63 6f 75 6e 74 29 0a 20 20 22 47 6f  | document.(&optional.count)..."Go | 
| 7900 |  20 74 6f 20 74 68 65 20 6e 65 78 74 20 64 6f 63    75 6d 65 6e 74 20 61 6e 64 20 72 65 6e 64 65 72  | .to.the.next.document.and.render | 
| 7920 |  20 69 74 2e 0a 54 61 6b 65 73 20 61 6e 20 6f 70    74 69 6f 6e 61 6c 20 43 4f 55 4e 54 2c 20 67 6f  | .it..Takes.an.optional.COUNT,.go | 
| 7940 |  65 73 20 62 61 63 6b 77 61 72 64 20 69 66 20 43    4f 55 4e 54 20 69 73 20 6e 65 67 61 74 69 76 65  | es.backward.if.COUNT.is.negative | 
| 7960 |  2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76    65 20 22 70 22 29 0a 20 20 28 6e 6f 76 2d 67 6f  | ."...(interactive."p")...(nov-go | 
| 7980 |  74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 6d 69 6e    20 28 31 2d 20 28 6c 65 6e 67 74 68 20 6e 6f 76  | to-document.(min.(1-.(length.nov | 
| 79a0 |  2d 64 6f 63 75 6d 65 6e 74 73 29 29 0a 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | -documents)).................... | 
| 79c0 |  20 20 20 20 20 20 20 28 2b 20 6e 6f 76 2d 64 6f    63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 6f  | .......(+.nov-documents-index.(o | 
| 79e0 |  72 20 63 6f 75 6e 74 20 31 29 29 29 29 29 0a 0a    28 64 65 66 75 6e 20 6e 6f 76 2d 70 72 65 76 69  | r.count.1)))))..(defun.nov-previ | 
| 7a00 |  6f 75 73 2d 64 6f 63 75 6d 65 6e 74 20 28 26 6f    70 74 69 6f 6e 61 6c 20 63 6f 75 6e 74 29 0a 20  | ous-document.(&optional.count).. | 
| 7a20 |  20 22 47 6f 20 74 6f 20 74 68 65 20 70 72 65 76    69 6f 75 73 20 64 6f 63 75 6d 65 6e 74 20 61 6e  | ."Go.to.the.previous.document.an | 
| 7a40 |  64 20 72 65 6e 64 65 72 20 69 74 2e 0a 54 61 6b    65 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 43  | d.render.it..Takes.an.optional.C | 
| 7a60 |  4f 55 4e 54 2c 20 67 6f 65 73 20 66 6f 72 77 61    72 64 20 69 66 20 43 4f 55 4e 54 20 69 73 20 6e  | OUNT,.goes.forward.if.COUNT.is.n | 
| 7a80 |  65 67 61 74 69 76 65 2e 22 0a 20 20 28 69 6e 74    65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20  | egative."...(interactive."p")... | 
| 7aa0 |  28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65    6e 74 20 28 6d 61 78 20 30 20 28 2d 20 6e 6f 76  | (nov-goto-document.(max.0.(-.nov | 
| 7ac0 |  2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78    20 28 6f 72 20 63 6f 75 6e 74 20 31 29 29 29 29  | -documents-index.(or.count.1)))) | 
| 7ae0 |  29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 73 63    72 6f 6c 6c 2d 75 70 20 28 61 72 67 29 0a 20 20  | )..(defun.nov-scroll-up.(arg)... | 
| 7b00 |  22 53 63 72 6f 6c 6c 20 77 69 74 68 20 60 73 63    72 6f 6c 6c 2d 75 70 27 20 6f 72 20 76 69 73 69  | "Scroll.with.`scroll-up'.or.visi | 
| 7b20 |  74 20 6e 65 78 74 20 63 68 61 70 74 65 72 20 69    66 20 61 74 20 62 6f 74 74 6f 6d 2e 22 0a 20 20  | t.next.chapter.if.at.bottom."... | 
| 7b40 |  28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22    29 0a 20 20 28 69 66 20 28 3e 3d 20 28 77 69 6e  | (interactive."P")...(if.(>=.(win | 
| 7b60 |  64 6f 77 2d 65 6e 64 29 20 28 70 6f 69 6e 74 2d    6d 61 78 29 29 0a 20 20 20 20 20 20 28 6e 6f 76  | dow-end).(point-max)).......(nov | 
| 7b80 |  2d 6e 65 78 74 2d 64 6f 63 75 6d 65 6e 74 29 0a    20 20 20 20 28 73 63 72 6f 6c 6c 2d 75 70 20 61  | -next-document).....(scroll-up.a | 
| 7ba0 |  72 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f    76 2d 73 63 72 6f 6c 6c 2d 64 6f 77 6e 20 28 61  | rg)))..(defun.nov-scroll-down.(a | 
| 7bc0 |  72 67 29 0a 20 20 22 53 63 72 6f 6c 6c 20 77 69    74 68 20 60 73 63 72 6f 6c 6c 2d 64 6f 77 6e 27  | rg)..."Scroll.with.`scroll-down' | 
| 7be0 |  20 6f 72 20 76 69 73 69 74 20 70 72 65 76 69 6f    75 73 20 63 68 61 70 74 65 72 20 69 66 20 61 74  | .or.visit.previous.chapter.if.at | 
| 7c00 |  20 74 6f 70 2e 22 0a 20 20 28 69 6e 74 65 72 61    63 74 69 76 65 20 22 50 22 29 0a 20 20 28 69 66  | .top."...(interactive."P")...(if | 
| 7c20 |  20 28 61 6e 64 20 28 3c 3d 20 28 77 69 6e 64 6f    77 2d 73 74 61 72 74 29 20 28 70 6f 69 6e 74 2d  | .(and.(<=.(window-start).(point- | 
| 7c40 |  6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 3e 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e 74  | min))............(>.nov-document | 
| 7c60 |  73 2d 69 6e 64 65 78 20 30 29 29 0a 20 20 20 20    20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20  | s-index.0)).......(progn........ | 
| 7c80 |  20 28 6e 6f 76 2d 70 72 65 76 69 6f 75 73 2d 64    6f 63 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20  | .(nov-previous-document)........ | 
| 7ca0 |  20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69    6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 28 73  | .(goto-char.(point-max))).....(s | 
| 7cc0 |  63 72 6f 6c 6c 2d 64 6f 77 6e 20 61 72 67 29 29    29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 76 69  | croll-down.arg)))..(defun.nov-vi | 
| 7ce0 |  73 69 74 2d 72 65 6c 61 74 69 76 65 2d 66 69 6c    65 20 28 66 69 6c 65 6e 61 6d 65 20 74 61 72 67  | sit-relative-file.(filename.targ | 
| 7d00 |  65 74 29 0a 20 20 22 56 69 73 69 74 20 74 68 65    20 64 6f 63 75 6d 65 6e 74 20 61 73 20 73 70 65  | et)..."Visit.the.document.as.spe | 
| 7d20 |  63 69 66 69 65 64 20 62 79 20 46 49 4c 45 4e 41    4d 45 20 61 6e 64 20 54 41 52 47 45 54 2e 22 0a  | cified.by.FILENAME.and.TARGET.". | 
| 7d40 |  20 20 28 6c 65 74 20 28 69 6e 64 65 78 29 0a 20    20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 7a  | ..(let.(index).....(when.(not.(z | 
| 7d60 |  65 72 6f 70 20 28 6c 65 6e 67 74 68 20 66 69 6c    65 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 28  | erop.(length.filename))).......( | 
| 7d80 |  6c 65 74 2a 20 28 28 63 75 72 72 65 6e 74 2d 70    61 74 68 20 28 63 64 72 20 28 61 72 65 66 20 6e  | let*.((current-path.(cdr.(aref.n | 
| 7da0 |  6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 6e 6f 76    2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78  | ov-documents.nov-documents-index | 
| 7dc0 |  29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 28 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c  | )))..............(directory.(fil | 
| 7de0 |  65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79    20 63 75 72 72 65 6e 74 2d 70 61 74 68 29 29 0a  | e-name-directory.current-path)). | 
| 7e00 |  20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61    74 68 20 28 66 69 6c 65 2d 74 72 75 65 6e 61 6d  | .............(path.(file-truenam | 
| 7e20 |  65 20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68    20 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 6e  | e.(nov-make-path.directory.filen | 
| 7e40 |  61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 28 6d 61 74 63 68 20 28 6e 6f 76 2d  | ame)))..............(match.(nov- | 
| 7e60 |  66 69 6e 64 2d 64 6f 63 75 6d 65 6e 74 0a 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | find-document................... | 
| 7e80 |  20 20 20 28 6c 61 6d 62 64 61 20 28 64 6f 63 29    20 28 65 71 75 61 6c 20 70 61 74 68 20 28 66 69  | ...(lambda.(doc).(equal.path.(fi | 
| 7ea0 |  6c 65 2d 74 72 75 65 6e 61 6d 65 20 28 63 64 72    20 64 6f 63 29 29 29 29 29 29 29 0a 20 20 20 20  | le-truename.(cdr.doc)))))))..... | 
| 7ec0 |  20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6d    61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20  | ....(when.(not.match)........... | 
| 7ee0 |  28 65 72 72 6f 72 20 22 43 6f 75 6c 64 6e 27 74    20 6c 6f 63 61 74 65 20 64 6f 63 75 6d 65 6e 74  | (error."Couldn't.locate.document | 
| 7f00 |  22 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74    71 20 69 6e 64 65 78 20 6d 61 74 63 68 29 29 29  | ")).........(setq.index.match))) | 
| 7f20 |  0a 20 20 20 20 3b 3b 20 48 41 43 4b 3a 20 74 68    69 73 20 62 69 6e 64 69 6e 67 20 69 73 20 6f 6e  | .....;;.HACK:.this.binding.is.on | 
| 7f40 |  6c 79 20 6e 65 65 64 20 66 6f 72 20 45 6d 61 63    73 20 32 37 2e 31 20 61 6e 64 20 6f 6c 64 65 72  | ly.need.for.Emacs.27.1.and.older | 
| 7f60 |  2c 20 61 73 20 6f 66 0a 20 20 20 20 3b 3b 20 45    6d 61 63 73 20 32 38 2e 31 2c 20 73 68 72 2e 65  | ,.as.of.....;;.Emacs.28.1,.shr.e | 
| 7f80 |  6c 20 61 6c 77 61 79 73 20 61 64 64 73 20 74 68    65 20 73 68 72 2d 74 61 72 67 65 74 2d 69 64 20  | l.always.adds.the.shr-target-id. | 
| 7fa0 |  70 72 6f 70 65 72 74 79 0a 20 20 20 20 28 6c 65    74 20 28 28 73 68 72 2d 74 61 72 67 65 74 2d 69  | property.....(let.((shr-target-i | 
| 7fc0 |  64 20 74 61 72 67 65 74 29 29 0a 20 20 20 20 20    20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d  | d.target)).......(nov-goto-docum | 
| 7fe0 |  65 6e 74 20 28 6f 72 20 69 6e 64 65 78 20 6e 6f    76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65  | ent.(or.index.nov-documents-inde | 
| 8000 |  78 29 29 29 29 0a 20 20 28 77 68 65 6e 20 74 61    72 67 65 74 0a 20 20 20 20 28 6c 65 74 20 28 28  | x))))...(when.target.....(let.(( | 
| 8020 |  70 6f 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29    0a 20 20 20 20 20 20 20 20 20 20 64 6f 6e 65 29  | pos.(point-min))...........done) | 
| 8040 |  0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61    6e 64 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20  | .......(while.(and.(not.done)... | 
| 8060 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    28 73 65 74 71 20 70 6f 73 20 28 6e 65 78 74 2d  | ................(setq.pos.(next- | 
| 8080 |  73 69 6e 67 6c 65 2d 70 72 6f 70 65 72 74 79 2d    63 68 61 6e 67 65 20 70 6f 73 20 27 73 68 72 2d  | single-property-change.pos.'shr- | 
| 80a0 |  74 61 72 67 65 74 2d 69 64 29 29 29 0a 20 20 20    20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70  | target-id))).........(let.((prop | 
| 80c0 |  65 72 74 79 20 28 67 65 74 2d 74 65 78 74 2d 70    72 6f 70 65 72 74 79 20 70 6f 73 20 27 73 68 72  | erty.(get-text-property.pos.'shr | 
| 80e0 |  2d 74 61 72 67 65 74 2d 69 64 29 29 29 0a 20 20    20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6f  | -target-id)))...........(when.(o | 
| 8100 |  72 20 28 65 71 75 61 6c 20 70 72 6f 70 65 72 74    79 20 74 61 72 67 65 74 29 0a 20 20 20 20 20 20  | r.(equal.property.target)....... | 
| 8120 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b    20 4e 4f 54 45 3a 20 61 73 20 6f 66 20 45 6d 61  | ..............;;.NOTE:.as.of.Ema | 
| 8140 |  63 73 20 32 38 2e 31 20 74 68 69 73 20 6d 61 79    20 62 65 20 61 20 6c 69 73 74 20 6f 66 20 74 61  | cs.28.1.this.may.be.a.list.of.ta | 
| 8160 |  72 67 65 74 73 0a 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28  | rgets.....................(and.( | 
| 8180 |  63 6f 6e 73 70 20 70 72 6f 70 65 72 74 79 29 20    28 6d 65 6d 62 65 72 20 74 61 72 67 65 74 20 70  | consp.property).(member.target.p | 
| 81a0 |  72 6f 70 65 72 74 79 29 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61  | roperty))).............(goto-cha | 
| 81c0 |  72 20 70 6f 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 28 72 65 63 65 6e 74 65 72 20 28 31 2d  | r.pos).............(recenter.(1- | 
| 81e0 |  20 28 6d 61 78 20 31 20 73 63 72 6f 6c 6c 2d 6d    61 72 67 69 6e 29 29 29 0a 20 20 20 20 20 20 20  | .(max.1.scroll-margin)))........ | 
| 8200 |  20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20    74 29 29 29 29 0a 20 20 20 20 20 20 28 77 68 65  | .....(setq.done.t)))).......(whe | 
| 8220 |  6e 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 20    20 20 20 20 20 28 65 72 72 6f 72 20 22 43 6f 75  | n.(not.done).........(error."Cou | 
| 8240 |  6c 64 6e 27 74 20 6c 6f 63 61 74 65 20 74 61 72    67 65 74 22 29 29 29 29 29 0a 0a 3b 3b 20 61 64  | ldn't.locate.target")))))..;;.ad | 
| 8260 |  61 70 74 65 64 20 66 72 6f 6d 20 60 73 68 72 2d    62 72 6f 77 73 65 2d 75 72 6c 27 0a 28 64 65 66  | apted.from.`shr-browse-url'.(def | 
| 8280 |  75 6e 20 6e 6f 76 2d 62 72 6f 77 73 65 2d 75 72    6c 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 6f 75  | un.nov-browse-url.(&optional.mou | 
| 82a0 |  73 65 2d 65 76 65 6e 74 29 0a 20 20 22 46 6f 6c    6c 6f 77 20 61 6e 20 65 78 74 65 72 6e 61 6c 20  | se-event)..."Follow.an.external. | 
| 82c0 |  75 72 6c 20 77 69 74 68 20 60 62 72 6f 77 73 65    2d 75 72 6c 27 2e 0a 49 6e 74 65 72 6e 61 6c 20  | url.with.`browse-url'..Internal. | 
| 82e0 |  55 52 4c 73 20 61 72 65 20 76 69 73 69 74 65 64    20 77 69 74 68 20 60 6e 6f 76 2d 76 69 73 69 74  | URLs.are.visited.with.`nov-visit | 
| 8300 |  2d 72 65 6c 61 74 69 76 65 2d 66 69 6c 65 27 2e    22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65  | -relative-file'."...(interactive | 
| 8320 |  20 28 6c 69 73 74 20 6c 61 73 74 2d 6e 6f 6e 6d    65 6e 75 2d 65 76 65 6e 74 29 29 0a 20 20 28 6d  | .(list.last-nonmenu-event))...(m | 
| 8340 |  6f 75 73 65 2d 73 65 74 2d 70 6f 69 6e 74 20 6d    6f 75 73 65 2d 65 76 65 6e 74 29 0a 20 20 28 6c  | ouse-set-point.mouse-event)...(l | 
| 8360 |  65 74 20 28 28 75 72 6c 20 28 67 65 74 2d 74 65    78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69  | et.((url.(get-text-property.(poi | 
| 8380 |  6e 74 29 20 27 73 68 72 2d 75 72 6c 29 29 29 0a    20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 75  | nt).'shr-url))).....(when.(not.u | 
| 83a0 |  72 6c 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d    65 72 72 6f 72 20 22 4e 6f 20 6c 69 6e 6b 20 75  | rl).......(user-error."No.link.u | 
| 83c0 |  6e 64 65 72 20 70 6f 69 6e 74 22 29 29 0a 20 20    20 20 28 69 66 20 28 6e 6f 76 2d 65 78 74 65 72  | nder.point")).....(if.(nov-exter | 
| 83e0 |  6e 61 6c 2d 75 72 6c 2d 70 20 75 72 6c 29 0a 20    20 20 20 20 20 20 20 28 62 72 6f 77 73 65 2d 75  | nal-url-p.url).........(browse-u | 
| 8400 |  72 6c 20 75 72 6c 29 0a 20 20 20 20 20 20 28 61    70 70 6c 79 20 27 6e 6f 76 2d 76 69 73 69 74 2d  | rl.url).......(apply.'nov-visit- | 
| 8420 |  72 65 6c 61 74 69 76 65 2d 66 69 6c 65 20 28 6e    6f 76 2d 75 72 6c 2d 66 69 6c 65 6e 61 6d 65 2d  | relative-file.(nov-url-filename- | 
| 8440 |  61 6e 64 2d 74 61 72 67 65 74 20 75 72 6c 29 29    29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d  | and-target.url)))))..(defun.nov- | 
| 8460 |  63 6f 70 79 2d 75 72 6c 20 28 26 6f 70 74 69 6f    6e 61 6c 20 6d 6f 75 73 65 2d 65 76 65 6e 74 29  | copy-url.(&optional.mouse-event) | 
| 8480 |  0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20    28 6c 69 73 74 20 6c 61 73 74 2d 6e 6f 6e 6d 65  | ...(interactive.(list.last-nonme | 
| 84a0 |  6e 75 2d 65 76 65 6e 74 29 29 0a 20 20 28 6d 6f    75 73 65 2d 73 65 74 2d 70 6f 69 6e 74 20 6d 6f  | nu-event))...(mouse-set-point.mo | 
| 84c0 |  75 73 65 2d 65 76 65 6e 74 29 0a 20 20 28 6c 65    74 20 28 28 75 72 6c 20 28 67 65 74 2d 74 65 78  | use-event)...(let.((url.(get-tex | 
| 84e0 |  74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e    74 29 20 27 73 68 72 2d 75 72 6c 29 29 29 0a 20  | t-property.(point).'shr-url))).. | 
| 8500 |  20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 75 72    6c 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65  | ...(when.(not.url).......(user-e | 
| 8520 |  72 72 6f 72 20 22 4e 6f 20 6c 69 6e 6b 20 75 6e    64 65 72 20 70 6f 69 6e 74 22 29 29 0a 20 20 20  | rror."No.link.under.point")).... | 
| 8540 |  20 28 6b 69 6c 6c 2d 6e 65 77 20 75 72 6c 29 0a    20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73  | .(kill-new.url).....(message."%s | 
| 8560 |  22 20 75 72 6c 29 29 29 0a 0a 28 64 65 66 75 6e    20 6e 6f 76 2d 73 61 76 65 64 2d 70 6c 61 63 65  | ".url)))..(defun.nov-saved-place | 
| 8580 |  73 20 28 29 0a 20 20 22 52 65 74 72 69 65 76 65    20 73 61 76 65 64 20 70 6c 61 63 65 73 20 69 6e  | s.()..."Retrieve.saved.places.in | 
| 85a0 |  20 60 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63 65    2d 66 69 6c 65 27 2e 22 0a 20 20 28 77 68 65 6e  | .`nov-save-place-file'."...(when | 
| 85c0 |  20 28 61 6e 64 20 6e 6f 76 2d 73 61 76 65 2d 70    6c 61 63 65 2d 66 69 6c 65 20 28 66 69 6c 65 2d  | .(and.nov-save-place-file.(file- | 
| 85e0 |  65 78 69 73 74 73 2d 70 20 6e 6f 76 2d 73 61 76    65 2d 70 6c 61 63 65 2d 66 69 6c 65 29 29 0a 20  | exists-p.nov-save-place-file)).. | 
| 8600 |  20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75    66 66 65 72 0a 20 20 20 20 20 20 28 69 6e 73 65  | ...(with-temp-buffer.......(inse | 
| 8620 |  72 74 2d 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73    2d 6c 69 74 65 72 61 6c 6c 79 20 6e 6f 76 2d 73  | rt-file-contents-literally.nov-s | 
| 8640 |  61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 29 0a    20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72  | ave-place-file).......(goto-char | 
| 8660 |  20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20    20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63  | .(point-min)).......(condition-c | 
| 8680 |  61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20    20 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74  | ase.nil...........(read.(current | 
| 86a0 |  2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20    20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20  | -buffer)).........(error........ | 
| 86c0 |  20 20 28 6e 6f 76 2d 77 61 72 6e 20 22 46 61 69    6c 65 64 20 74 6f 20 72 65 74 72 69 65 76 65 20  | ..(nov-warn."Failed.to.retrieve. | 
| 86e0 |  73 61 76 65 64 20 70 6c 61 63 65 73 20 66 72 6f    6d 20 60 6e 6f 76 2d 73 61 76 65 2d 70 6c 61 63  | saved.places.from.`nov-save-plac | 
| 8700 |  65 2d 66 69 6c 65 27 22 29 0a 20 20 20 20 20 20    20 20 20 6e 69 6c 29 29 29 29 29 0a 0a 28 64 65  | e-file'")..........nil)))))..(de | 
| 8720 |  66 75 6e 20 6e 6f 76 2d 73 61 76 65 64 2d 70 6c    61 63 65 20 28 69 64 65 6e 74 69 66 69 65 72 29  | fun.nov-saved-place.(identifier) | 
| 8740 |  0a 20 20 22 52 65 74 72 69 65 76 65 20 73 61 76    65 64 20 70 6c 61 63 65 20 66 6f 72 20 49 44 45  | ..."Retrieve.saved.place.for.IDE | 
| 8760 |  4e 54 49 46 49 45 52 20 69 6e 20 60 6e 6f 76 2d    73 61 76 65 64 2d 70 6c 61 63 65 2d 66 69 6c 65  | NTIFIER.in.`nov-saved-place-file | 
| 8780 |  27 2e 22 0a 20 20 28 63 64 72 20 28 61 73 73 71    20 69 64 65 6e 74 69 66 69 65 72 20 28 6e 6f 76  | '."...(cdr.(assq.identifier.(nov | 
| 87a0 |  2d 73 61 76 65 64 2d 70 6c 61 63 65 73 29 29 29    29 0a 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 73 61  | -saved-places))))..(defun.nov-sa | 
| 87c0 |  76 65 2d 70 6c 61 63 65 20 28 69 64 65 6e 74 69    66 69 65 72 20 69 6e 64 65 78 20 70 6f 69 6e 74  | ve-place.(identifier.index.point | 
| 87e0 |  29 0a 20 20 22 53 61 76 65 20 70 6c 61 63 65 20    61 73 20 69 64 65 6e 74 69 66 69 65 64 20 62 79  | )..."Save.place.as.identified.by | 
| 8800 |  20 49 44 45 4e 54 49 46 49 45 52 2c 20 49 4e 44    45 58 20 61 6e 64 20 50 4f 49 4e 54 2e 0a 53 61  | .IDENTIFIER,.INDEX.and.POINT..Sa | 
| 8820 |  76 69 6e 67 20 69 73 20 6f 6e 6c 79 20 64 6f 6e    65 20 69 66 20 60 6e 6f 76 2d 73 61 76 65 2d 70  | ving.is.only.done.if.`nov-save-p | 
| 8840 |  6c 61 63 65 2d 66 69 6c 65 27 20 69 73 20 73 65    74 2e 22 0a 20 20 28 77 68 65 6e 20 6e 6f 76 2d  | lace-file'.is.set."...(when.nov- | 
| 8860 |  73 61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 0a    20 20 20 20 28 6c 65 74 2a 20 28 28 70 6c 61 63  | save-place-file.....(let*.((plac | 
| 8880 |  65 20 60 28 2c 69 64 65 6e 74 69 66 69 65 72 20    28 69 6e 64 65 78 20 2e 20 2c 69 6e 64 65 78 29  | e.`(,identifier.(index...,index) | 
| 88a0 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ................................ | 
| 88c0 |  20 28 70 6f 69 6e 74 20 2e 20 2c 70 6f 69 6e 74    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28  | .(point...,point)))............( | 
| 88e0 |  70 6c 61 63 65 73 20 28 63 6f 6e 73 20 70 6c 61    63 65 20 28 61 73 73 71 2d 64 65 6c 65 74 65 2d  | places.(cons.place.(assq-delete- | 
| 8900 |  61 6c 6c 20 69 64 65 6e 74 69 66 69 65 72 20 28    6e 6f 76 2d 73 61 76 65 64 2d 70 6c 61 63 65 73  | all.identifier.(nov-saved-places | 
| 8920 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20    70 72 69 6e 74 2d 6c 65 76 65 6c 0a 20 20 20 20  | ))))............print-level..... | 
| 8940 |  20 20 20 20 20 20 20 70 72 69 6e 74 2d 6c 65 6e    67 74 68 29 0a 20 20 20 20 20 20 28 77 69 74 68  | .......print-length).......(with | 
| 8960 |  2d 74 65 6d 70 2d 66 69 6c 65 20 6e 6f 76 2d 73    61 76 65 2d 70 6c 61 63 65 2d 66 69 6c 65 0a 20  | -temp-file.nov-save-place-file.. | 
| 8980 |  20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28    70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20  | .......(insert.(prin1-to-string. | 
| 89a0 |  70 6c 61 63 65 73 29 29 29 29 29 29 0a 0a 28 64    65 66 75 6e 20 6e 6f 76 2d 2d 69 6e 64 65 78 2d  | places))))))..(defun.nov--index- | 
| 89c0 |  76 61 6c 69 64 2d 70 20 28 64 6f 63 75 6d 65 6e    74 73 20 69 6e 64 65 78 29 0a 20 20 28 61 6e 64  | valid-p.(documents.index)...(and | 
| 89e0 |  20 28 69 6e 74 65 67 65 72 70 20 69 6e 64 65 78    29 0a 20 20 20 20 20 20 20 28 3e 3d 20 69 6e 64  | .(integerp.index)........(>=.ind | 
| 8a00 |  65 78 20 30 29 0a 20 20 20 20 20 20 20 28 3c 20    69 6e 64 65 78 20 28 6c 65 6e 67 74 68 20 64 6f  | ex.0)........(<.index.(length.do | 
| 8a20 |  63 75 6d 65 6e 74 73 29 29 29 29 0a 0a 28 64 65    66 75 6e 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d  | cuments))))..(defun.nov-history- | 
| 8a40 |  62 61 63 6b 20 28 29 0a 20 20 22 47 6f 20 62 61    63 6b 20 69 6e 20 74 68 65 20 68 69 73 74 6f 72  | back.()..."Go.back.in.the.histor | 
| 8a60 |  79 20 74 6f 20 74 68 65 20 6c 61 73 74 20 76 69    73 69 74 65 64 20 64 6f 63 75 6d 65 6e 74 2e 22  | y.to.the.last.visited.document." | 
| 8a80 |  0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29    0a 20 20 28 6f 72 20 6e 6f 76 2d 68 69 73 74 6f  | ...(interactive)...(or.nov-histo | 
| 8aa0 |  72 79 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65    72 72 6f 72 20 22 54 68 69 73 20 69 73 20 74 68  | ry.......(user-error."This.is.th | 
| 8ac0 |  65 20 66 69 72 73 74 20 64 6f 63 75 6d 65 6e 74    20 79 6f 75 20 6c 6f 6f 6b 65 64 20 61 74 22 29  | e.first.document.you.looked.at") | 
| 8ae0 |  29 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 6f    72 79 2d 66 6f 72 77 61 72 64 20 28 63 6f 6e 73  | )...(let.((history-forward.(cons | 
| 8b00 |  20 28 6c 69 73 74 20 6e 6f 76 2d 64 6f 63 75 6d    65 6e 74 73 2d 69 6e 64 65 78 20 28 70 6f 69 6e  | .(list.nov-documents-index.(poin | 
| 8b20 |  74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | t))............................. | 
| 8b40 |  20 20 20 6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66    6f 72 77 61 72 64 29 29 29 0a 20 20 20 20 28 73  | ...nov-history-forward))).....(s | 
| 8b60 |  65 71 2d 6c 65 74 20 28 69 6e 64 65 78 20 6f 70    6f 69 6e 74 29 20 28 63 61 72 20 6e 6f 76 2d 68  | eq-let.(index.opoint).(car.nov-h | 
| 8b80 |  69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 28 73    65 74 71 20 6e 6f 76 2d 68 69 73 74 6f 72 79 20  | istory).......(setq.nov-history. | 
| 8ba0 |  28 63 64 72 20 6e 6f 76 2d 68 69 73 74 6f 72 79    29 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 67 6f  | (cdr.nov-history)).......(nov-go | 
| 8bc0 |  74 6f 2d 64 6f 63 75 6d 65 6e 74 20 69 6e 64 65    78 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6e  | to-document.index).......(setq.n | 
| 8be0 |  6f 76 2d 68 69 73 74 6f 72 79 20 28 63 64 72 20    6e 6f 76 2d 68 69 73 74 6f 72 79 29 29 0a 20 20  | ov-history.(cdr.nov-history))... | 
| 8c00 |  20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 68 69    73 74 6f 72 79 2d 66 6f 72 77 61 72 64 20 68 69  | ....(setq.nov-history-forward.hi | 
| 8c20 |  73 74 6f 72 79 2d 66 6f 72 77 61 72 64 29 0a 20    20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20  | story-forward).......(goto-char. | 
| 8c40 |  6f 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 28 72    65 63 65 6e 74 65 72 20 28 31 2d 20 28 6d 61 78  | opoint).......(recenter.(1-.(max | 
| 8c60 |  20 31 20 73 63 72 6f 6c 6c 2d 6d 61 72 67 69 6e    29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e  | .1.scroll-margin))))))..(defun.n | 
| 8c80 |  6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77 61    72 64 20 28 29 0a 20 20 22 47 6f 20 66 6f 72 77  | ov-history-forward.()..."Go.forw | 
| 8ca0 |  61 72 64 20 69 6e 20 74 68 65 20 68 69 73 74 6f    72 79 20 6f 66 20 76 69 73 69 74 65 64 20 64 6f  | ard.in.the.history.of.visited.do | 
| 8cc0 |  63 75 6d 65 6e 74 73 2e 22 0a 20 20 28 69 6e 74    65 72 61 63 74 69 76 65 29 0a 20 20 28 6f 72 20  | cuments."...(interactive)...(or. | 
| 8ce0 |  6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77    61 72 64 0a 20 20 20 20 20 20 28 75 73 65 72 2d  | nov-history-forward.......(user- | 
| 8d00 |  65 72 72 6f 72 20 22 54 68 69 73 20 69 73 20 74    68 65 20 6c 61 73 74 20 64 6f 63 75 6d 65 6e 74  | error."This.is.the.last.document | 
| 8d20 |  20 79 6f 75 20 6c 6f 6f 6b 65 64 20 61 74 22 29    29 0a 20 20 28 6c 65 74 20 28 28 68 69 73 74 6f  | .you.looked.at"))...(let.((histo | 
| 8d40 |  72 79 2d 66 6f 72 77 61 72 64 20 28 63 64 72 20    6e 6f 76 2d 68 69 73 74 6f 72 79 2d 66 6f 72 77  | ry-forward.(cdr.nov-history-forw | 
| 8d60 |  61 72 64 29 29 29 0a 20 20 20 20 28 73 65 71 2d    6c 65 74 20 28 69 6e 64 65 78 20 6f 70 6f 69 6e  | ard))).....(seq-let.(index.opoin | 
| 8d80 |  74 29 20 28 63 61 72 20 6e 6f 76 2d 68 69 73 74    6f 72 79 2d 66 6f 72 77 61 72 64 29 0a 20 20 20  | t).(car.nov-history-forward).... | 
| 8da0 |  20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63    75 6d 65 6e 74 20 69 6e 64 65 78 29 0a 20 20 20  | ...(nov-goto-document.index).... | 
| 8dc0 |  20 20 20 28 73 65 74 71 20 6e 6f 76 2d 68 69 73    74 6f 72 79 2d 66 6f 72 77 61 72 64 20 68 69 73  | ...(setq.nov-history-forward.his | 
| 8de0 |  74 6f 72 79 2d 66 6f 72 77 61 72 64 29 0a 20 20    20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 6f  | tory-forward).......(goto-char.o | 
| 8e00 |  70 6f 69 6e 74 29 0a 20 20 20 20 20 20 28 72 65    63 65 6e 74 65 72 20 28 31 2d 20 28 6d 61 78 20  | point).......(recenter.(1-.(max. | 
| 8e20 |  31 20 73 63 72 6f 6c 6c 2d 6d 61 72 67 69 6e 29    29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f  | 1.scroll-margin))))))..(defun.no | 
| 8e40 |  76 2d 2d 69 6e 69 74 69 61 6c 69 7a 65 2d 74 65    6d 70 2d 64 69 72 20 28 70 61 74 68 29 0a 20 20  | v--initialize-temp-dir.(path)... | 
| 8e60 |  28 77 68 65 6e 20 28 6e 6f 74 20 70 61 74 68 29    0a 20 20 20 20 28 65 72 72 6f 72 20 22 45 50 55  | (when.(not.path).....(error."EPU | 
| 8e80 |  42 20 6d 75 73 74 20 62 65 20 61 73 73 6f 63 69    61 74 65 64 20 77 69 74 68 20 66 69 6c 65 22 29  | B.must.be.associated.with.file") | 
| 8ea0 |  29 0a 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6e    6f 76 2d 75 6e 7a 69 70 2d 70 72 6f 67 72 61 6d  | )...(when.(not.nov-unzip-program | 
| 8ec0 |  29 0a 20 20 20 20 28 65 72 72 6f 72 20 22 75 6e    7a 69 70 20 65 78 65 63 75 74 61 62 6c 65 20 6e  | ).....(error."unzip.executable.n | 
| 8ee0 |  6f 74 20 66 6f 75 6e 64 2c 20 63 75 73 74 6f 6d    69 7a 65 20 60 6e 6f 76 2d 75 6e 7a 69 70 2d 70  | ot.found,.customize.`nov-unzip-p | 
| 8f00 |  72 6f 67 72 61 6d 27 22 29 29 0a 20 20 28 73 65    74 71 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20  | rogram'"))...(setq.nov-work-dir. | 
| 8f20 |  28 6d 61 6b 65 2d 74 65 6d 70 2d 66 69 6c 65 20    22 6e 6f 76 2d 22 20 74 20 22 2e 65 70 75 62 22  | (make-temp-file."nov-".t.".epub" | 
| 8f40 |  29 29 0a 20 20 28 6c 65 74 20 28 28 65 78 69 74    2d 63 6f 64 65 20 28 6e 6f 76 2d 75 6e 7a 69 70  | ))...(let.((exit-code.(nov-unzip | 
| 8f60 |  2d 65 70 75 62 20 6e 6f 76 2d 77 6f 72 6b 2d 64    69 72 20 70 61 74 68 29 29 29 0a 20 20 20 20 28  | -epub.nov-work-dir.path))).....( | 
| 8f80 |  77 68 65 6e 20 28 6e 6f 74 20 28 69 6e 74 65 67    65 72 70 20 65 78 69 74 2d 63 6f 64 65 29 29 0a  | when.(not.(integerp.exit-code)). | 
| 8fa0 |  20 20 20 20 20 20 28 6e 6f 76 2d 63 6c 65 61 6e    2d 75 70 29 0a 20 20 20 20 20 20 28 65 72 72 6f  | ......(nov-clean-up).......(erro | 
| 8fc0 |  72 20 22 45 50 55 42 20 65 78 74 72 61 63 74 69    6f 6e 20 61 62 6f 72 74 65 64 20 62 79 20 73 69  | r."EPUB.extraction.aborted.by.si | 
| 8fe0 |  67 6e 61 6c 20 25 73 22 20 65 78 69 74 2d 63 6f    64 65 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28  | gnal.%s".exit-code)).....(when.( | 
| 9000 |  3e 20 65 78 69 74 2d 63 6f 64 65 20 31 29 20 3b    20 65 78 69 74 20 63 6f 64 65 20 31 20 69 73 20  | >.exit-code.1).;.exit.code.1.is. | 
| 9020 |  6d 6f 73 74 20 6c 69 6b 65 6c 79 20 61 20 77 61    72 6e 69 6e 67 0a 20 20 20 20 20 20 28 6e 6f 76  | most.likely.a.warning.......(nov | 
| 9040 |  2d 63 6c 65 61 6e 2d 75 70 29 0a 20 20 20 20 20    20 28 65 72 72 6f 72 20 22 45 50 55 42 20 65 78  | -clean-up).......(error."EPUB.ex | 
| 9060 |  74 72 61 63 74 69 6f 6e 20 66 61 69 6c 65 64 20    77 69 74 68 20 65 78 69 74 20 63 6f 64 65 20 25  | traction.failed.with.exit.code.% | 
| 9080 |  64 20 28 73 65 65 20 2a 6e 6f 76 20 75 6e 7a 69    70 2a 20 62 75 66 66 65 72 29 22 0a 20 20 20 20  | d.(see.*nov.unzip*.buffer)"..... | 
| 90a0 |  20 20 20 20 20 20 20 20 20 65 78 69 74 2d 63 6f    64 65 29 29 29 0a 20 20 28 77 68 65 6e 20 28 6e  | .........exit-code)))...(when.(n | 
| 90c0 |  6f 74 20 28 6e 6f 76 2d 65 70 75 62 2d 76 61 6c    69 64 2d 70 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69  | ot.(nov-epub-valid-p.nov-work-di | 
| 90e0 |  72 29 29 0a 20 20 20 20 28 6e 6f 76 2d 63 6c 65    61 6e 2d 75 70 29 0a 20 20 20 20 28 65 72 72 6f  | r)).....(nov-clean-up).....(erro | 
| 9100 |  72 20 22 49 6e 76 61 6c 69 64 20 45 50 55 42 20    66 69 6c 65 22 29 29 29 0a 0a 28 64 65 66 75 6e  | r."Invalid.EPUB.file")))..(defun | 
| 9120 |  20 6e 6f 76 2d 6f 70 65 6e 2d 64 69 72 65 63 74    6f 72 79 20 28 64 69 72 29 0a 20 20 22 4f 70 65  | .nov-open-directory.(dir)..."Ope | 
| 9140 |  6e 20 45 50 55 42 20 62 75 66 66 65 72 20 75 73    69 6e 67 20 44 49 52 20 61 73 20 64 69 72 65 63  | n.EPUB.buffer.using.DIR.as.direc | 
| 9160 |  74 6f 72 79 20 6f 66 20 74 68 65 20 64 6f 63 75    6d 65 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61  | tory.of.the.document."...(intera | 
| 9180 |  63 74 69 76 65 20 22 44 45 50 55 42 20 64 69 72    65 63 74 6f 72 79 20 74 6f 20 72 65 61 64 3a 20  | ctive."DEPUB.directory.to.read:. | 
| 91a0 |  22 29 0a 20 20 28 6c 65 74 20 28 28 62 75 66 20    28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d 62 75  | ")...(let.((buf.(generate-new-bu | 
| 91c0 |  66 66 65 72 20 28 66 6f 72 6d 61 74 20 22 25 73    3c 6e 6f 76 3e 22 20 64 69 72 29 29 29 29 0a 20  | ffer.(format."%s<nov>".dir)))).. | 
| 91e0 |  20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74    2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20  | ...(with-current-buffer.buf..... | 
| 9200 |  20 20 28 73 65 74 71 20 6e 6f 76 2d 69 6e 69 74    69 61 6c 69 7a 65 2d 77 6f 72 6b 2d 64 69 72 2d  | ..(setq.nov-initialize-work-dir- | 
| 9220 |  70 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65    74 71 20 6e 6f 76 2d 72 65 6d 6f 76 65 2d 77 6f  | p.nil).......(setq.nov-remove-wo | 
| 9240 |  72 6b 2d 64 69 72 2d 6f 6e 2d 65 78 69 74 2d 70    20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 74  | rk-dir-on-exit-p.nil).......(set | 
| 9260 |  71 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 64    69 72 29 0a 20 20 20 20 20 20 28 6e 6f 76 2d 6d  | q.nov-work-dir.dir).......(nov-m | 
| 9280 |  6f 64 65 29 29 0a 20 20 20 20 28 73 77 69 74 63    68 2d 74 6f 2d 62 75 66 66 65 72 20 62 75 66 29  | ode)).....(switch-to-buffer.buf) | 
| 92a0 |  29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f    61 64 0a 28 64 65 66 69 6e 65 2d 64 65 72 69 76  | ))..;;;###autoload.(define-deriv | 
| 92c0 |  65 64 2d 6d 6f 64 65 20 6e 6f 76 2d 6d 6f 64 65    20 73 70 65 63 69 61 6c 2d 6d 6f 64 65 20 22 45  | ed-mode.nov-mode.special-mode."E | 
| 92e0 |  50 55 42 22 0a 20 20 22 4d 61 6a 6f 72 20 6d 6f    64 65 20 66 6f 72 20 72 65 61 64 69 6e 67 20 45  | PUB"..."Major.mode.for.reading.E | 
| 9300 |  50 55 42 20 64 6f 63 75 6d 65 6e 74 73 22 0a 20    20 28 77 68 65 6e 20 6e 6f 76 2d 72 65 6d 6f 76  | PUB.documents"...(when.nov-remov | 
| 9320 |  65 2d 77 6f 72 6b 2d 64 69 72 2d 6f 6e 2d 65 78    69 74 2d 70 0a 20 20 20 20 28 61 64 64 2d 68 6f  | e-work-dir-on-exit-p.....(add-ho | 
| 9340 |  6f 6b 20 27 6b 69 6c 6c 2d 62 75 66 66 65 72 2d    68 6f 6f 6b 20 27 6e 6f 76 2d 63 6c 65 61 6e 2d  | ok.'kill-buffer-hook.'nov-clean- | 
| 9360 |  75 70 20 6e 69 6c 20 74 29 0a 20 20 20 20 28 61    64 64 2d 68 6f 6f 6b 20 27 6b 69 6c 6c 2d 65 6d  | up.nil.t).....(add-hook.'kill-em | 
| 9380 |  61 63 73 2d 68 6f 6f 6b 20 27 6e 6f 76 2d 63 6c    65 61 6e 2d 75 70 2d 61 6c 6c 29 0a 20 20 20 20  | acs-hook.'nov-clean-up-all)..... | 
| 93a0 |  28 61 64 64 2d 68 6f 6f 6b 20 27 63 68 61 6e 67    65 2d 6d 61 6a 6f 72 2d 6d 6f 64 65 2d 68 6f 6f  | (add-hook.'change-major-mode-hoo | 
| 93c0 |  6b 20 27 6e 6f 76 2d 63 6c 65 61 6e 2d 75 70 20    6e 69 6c 20 74 29 29 0a 0a 20 20 28 77 68 65 6e  | k.'nov-clean-up.nil.t))....(when | 
| 93e0 |  20 6e 6f 76 2d 69 6e 69 74 69 61 6c 69 7a 65 2d    77 6f 72 6b 2d 64 69 72 2d 70 0a 20 20 20 20 28  | .nov-initialize-work-dir-p.....( | 
| 9400 |  6e 6f 76 2d 2d 69 6e 69 74 69 61 6c 69 7a 65 2d    74 65 6d 70 2d 64 69 72 20 62 75 66 66 65 72 2d  | nov--initialize-temp-dir.buffer- | 
| 9420 |  66 69 6c 65 2d 6e 61 6d 65 29 29 0a 0a 20 20 28    6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 20 28  | file-name))....(let*.((content.( | 
| 9440 |  6e 6f 76 2d 73 6c 75 72 70 20 28 6e 6f 76 2d 63    6f 6e 74 61 69 6e 65 72 2d 66 69 6c 65 6e 61 6d  | nov-slurp.(nov-container-filenam | 
| 9460 |  65 20 6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 29 20    74 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f  | e.nov-work-dir).t))..........(co | 
| 9480 |  6e 74 65 6e 74 2d 66 69 6c 65 2d 6e 61 6d 65 20    28 6e 6f 76 2d 63 6f 6e 74 61 69 6e 65 72 2d 63  | ntent-file-name.(nov-container-c | 
| 94a0 |  6f 6e 74 65 6e 74 2d 66 69 6c 65 6e 61 6d 65 20    63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 20 20  | ontent-filename.content))....... | 
| 94c0 |  20 20 20 28 63 6f 6e 74 65 6e 74 2d 66 69 6c 65    20 28 6e 6f 76 2d 6d 61 6b 65 2d 70 61 74 68 20  | ...(content-file.(nov-make-path. | 
| 94e0 |  6e 6f 76 2d 77 6f 72 6b 2d 64 69 72 20 63 6f 6e    74 65 6e 74 2d 66 69 6c 65 2d 6e 61 6d 65 29 29  | nov-work-dir.content-file-name)) | 
| 9500 |  0a 20 20 20 20 20 20 20 20 20 28 77 6f 72 6b 2d    64 69 72 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64  | ..........(work-dir.(file-name-d | 
| 9520 |  69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 6e 74    2d 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20  | irectory.content-file))......... | 
| 9540 |  20 28 63 6f 6e 74 65 6e 74 20 28 6e 6f 76 2d 73    6c 75 72 70 20 63 6f 6e 74 65 6e 74 2d 66 69 6c  | .(content.(nov-slurp.content-fil | 
| 9560 |  65 20 74 29 29 29 0a 20 20 20 20 28 73 65 74 71    20 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 66 69 6c  | e.t))).....(setq.nov-content-fil | 
| 9580 |  65 20 63 6f 6e 74 65 6e 74 2d 66 69 6c 65 29 0a    20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 65 70  | e.content-file).....(setq.nov-ep | 
| 95a0 |  75 62 2d 76 65 72 73 69 6f 6e 20 28 6e 6f 76 2d    63 6f 6e 74 65 6e 74 2d 76 65 72 73 69 6f 6e 20  | ub-version.(nov-content-version. | 
| 95c0 |  63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 28 73    65 74 71 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61  | content)).....(setq.nov-metadata | 
| 95e0 |  20 28 6e 6f 76 2d 63 6f 6e 74 65 6e 74 2d 6d 65    74 61 64 61 74 61 20 63 6f 6e 74 65 6e 74 29 29  | .(nov-content-metadata.content)) | 
| 9600 |  0a 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d 64    6f 63 75 6d 65 6e 74 73 20 28 61 70 70 6c 79 20  | .....(setq.nov-documents.(apply. | 
| 9620 |  27 76 65 63 74 6f 72 20 28 6e 6f 76 2d 63 6f 6e    74 65 6e 74 2d 66 69 6c 65 73 20 77 6f 72 6b 2d  | 'vector.(nov-content-files.work- | 
| 9640 |  64 69 72 20 63 6f 6e 74 65 6e 74 29 29 29 0a 20    20 20 20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63  | dir.content))).....(setq.nov-doc | 
| 9660 |  75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 30 29 29    0a 20 20 28 73 65 74 71 20 62 75 66 66 65 72 2d  | uments-index.0))...(setq.buffer- | 
| 9680 |  75 6e 64 6f 2d 6c 69 73 74 20 74 29 0a 20 20 28    73 65 74 71 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61  | undo-list.t)...(setq.nov-file-na | 
| 96a0 |  6d 65 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d    6e 61 6d 65 29 29 20 3b 20 6b 65 70 74 20 66 6f  | me.(buffer-file-name)).;.kept.fo | 
| 96c0 |  72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20    72 65 61 73 6f 6e 73 0a 20 20 28 73 65 74 71 2d  | r.compatibility.reasons...(setq- | 
| 96e0 |  6c 6f 63 61 6c 20 62 6f 6f 6b 6d 61 72 6b 2d 6d    61 6b 65 2d 72 65 63 6f 72 64 2d 66 75 6e 63 74  | local.bookmark-make-record-funct | 
| 9700 |  69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20    20 20 27 6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d  | ion...............'nov-bookmark- | 
| 9720 |  6d 61 6b 65 2d 72 65 63 6f 72 64 29 0a 20 20 28    6c 65 74 20 28 28 70 6c 61 63 65 20 28 6e 6f 76  | make-record)...(let.((place.(nov | 
| 9740 |  2d 73 61 76 65 64 2d 70 6c 61 63 65 20 28 63 64    72 20 28 61 73 73 71 20 27 69 64 65 6e 74 69 66  | -saved-place.(cdr.(assq.'identif | 
| 9760 |  69 65 72 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61    29 29 29 29 29 0a 20 20 20 20 28 69 66 20 70 6c  | ier.nov-metadata))))).....(if.pl | 
| 9780 |  61 63 65 0a 20 20 20 20 20 20 20 20 28 6c 65 74    20 28 28 69 6e 64 65 78 20 28 63 64 72 20 28 61  | ace.........(let.((index.(cdr.(a | 
| 97a0 |  73 73 71 20 27 69 6e 64 65 78 20 70 6c 61 63 65    29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  | ssq.'index.place)))............. | 
| 97c0 |  20 20 28 70 6f 69 6e 74 20 28 63 64 72 20 28 61    73 73 71 20 27 70 6f 69 6e 74 20 70 6c 61 63 65  | ..(point.(cdr.(assq.'point.place | 
| 97e0 |  29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28    69 66 20 28 6e 6f 76 2d 2d 69 6e 64 65 78 2d 76  | ))))...........(if.(nov--index-v | 
| 9800 |  61 6c 69 64 2d 70 20 6e 6f 76 2d 64 6f 63 75 6d    65 6e 74 73 20 69 6e 64 65 78 29 0a 20 20 20 20  | alid-p.nov-documents.index)..... | 
| 9820 |  20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e    0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ..........(progn................ | 
| 9840 |  20 28 73 65 74 71 20 6e 6f 76 2d 64 6f 63 75 6d    65 6e 74 73 2d 69 6e 64 65 78 20 69 6e 64 65 78  | .(setq.nov-documents-index.index | 
| 9860 |  29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f  | ).................(nov-render-do | 
| 9880 |  63 75 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68  | cument).................(goto-ch | 
| 98a0 |  61 72 20 70 6f 69 6e 74 29 29 0a 20 20 20 20 20    20 20 20 20 20 20 20 28 6e 6f 76 2d 77 61 72 6e  | ar.point)).............(nov-warn | 
| 98c0 |  20 22 43 6f 75 6c 64 6e 27 74 20 72 65 73 74 6f    72 65 20 6c 61 73 74 20 70 6f 73 69 74 69 6f 6e  | ."Couldn't.restore.last.position | 
| 98e0 |  22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f 63 75 6d  | ").............(nov-render-docum | 
| 9900 |  65 6e 74 29 29 29 0a 20 20 20 20 20 20 28 6e 6f    76 2d 72 65 6e 64 65 72 2d 64 6f 63 75 6d 65 6e  | ent))).......(nov-render-documen | 
| 9920 |  74 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 72 65 63    65 6e 74 66 20 69 6e 74 65 72 6f 70 0a 0a 28 64  | t))))....;;;.recentf.interop..(d | 
| 9940 |  65 66 75 6e 20 6e 6f 76 2d 61 64 64 2d 74 6f 2d    72 65 63 65 6e 74 66 20 28 29 0a 20 20 22 41 64  | efun.nov-add-to-recentf.()..."Ad | 
| 9960 |  64 20 72 65 61 6c 20 70 61 74 68 20 74 6f 20 72    65 63 65 6e 74 66 20 6c 69 73 74 20 69 66 20 70  | d.real.path.to.recentf.list.if.p | 
| 9980 |  6f 73 73 69 62 6c 65 2e 22 0a 20 20 28 77 68 65    6e 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 0a  | ossible."...(when.nov-file-name. | 
| 99a0 |  20 20 20 20 28 72 65 63 65 6e 74 66 2d 61 64 64    2d 66 69 6c 65 20 6e 6f 76 2d 66 69 6c 65 2d 6e  | ....(recentf-add-file.nov-file-n | 
| 99c0 |  61 6d 65 29 29 29 0a 0a 28 61 64 64 2d 68 6f 6f    6b 20 27 6e 6f 76 2d 6d 6f 64 65 2d 68 6f 6f 6b  | ame)))..(add-hook.'nov-mode-hook | 
| 99e0 |  20 27 6e 6f 76 2d 61 64 64 2d 74 6f 2d 72 65 63    65 6e 74 66 29 0a 28 61 64 64 2d 68 6f 6f 6b 20  | .'nov-add-to-recentf).(add-hook. | 
| 9a00 |  27 6e 6f 76 2d 6d 6f 64 65 2d 68 6f 6f 6b 20 27    68 61 63 6b 2d 64 69 72 2d 6c 6f 63 61 6c 2d 76  | 'nov-mode-hook.'hack-dir-local-v | 
| 9a20 |  61 72 69 61 62 6c 65 73 2d 6e 6f 6e 2d 66 69 6c    65 2d 62 75 66 66 65 72 29 0a 0a 0c 0a 28 64 65  | ariables-non-file-buffer)....(de | 
| 9a40 |  66 75 6e 20 6e 6f 76 2d 2d 66 69 6e 64 2d 66 69    6c 65 20 28 66 69 6c 65 20 69 6e 64 65 78 20 70  | fun.nov--find-file.(file.index.p | 
| 9a60 |  6f 69 6e 74 29 0a 20 20 22 4f 70 65 6e 20 46 49    4c 45 20 69 6e 20 6e 6f 76 2d 6d 6f 64 65 20 61  | oint)..."Open.FILE.in.nov-mode.a | 
| 9a80 |  6e 64 20 67 6f 20 74 6f 20 74 68 65 20 73 70 65    63 69 66 69 65 64 20 49 4e 44 45 58 20 61 6e 64  | nd.go.to.the.specified.INDEX.and | 
| 9aa0 |  20 50 4f 53 49 54 49 4f 4e 2e 0a 49 66 20 46 49    4c 45 20 69 73 20 6e 69 6c 2c 20 74 68 65 20 63  | .POSITION..If.FILE.is.nil,.the.c | 
| 9ac0 |  75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 73    20 75 73 65 64 2e 22 0a 20 20 28 77 68 65 6e 20  | urrent.buffer.is.used."...(when. | 
| 9ae0 |  66 69 6c 65 0a 20 20 20 20 28 66 69 6e 64 2d 66    69 6c 65 20 66 69 6c 65 29 29 0a 20 20 28 75 6e  | file.....(find-file.file))...(un | 
| 9b00 |  6c 65 73 73 20 28 65 71 20 6d 61 6a 6f 72 2d 6d    6f 64 65 20 27 6e 6f 76 2d 6d 6f 64 65 29 0a 20  | less.(eq.major-mode.'nov-mode).. | 
| 9b20 |  20 20 20 28 6e 6f 76 2d 6d 6f 64 65 29 29 0a 20    20 28 77 68 65 6e 20 28 6e 6f 74 20 28 6e 6f 76  | ...(nov-mode))...(when.(not.(nov | 
| 9b40 |  2d 2d 69 6e 64 65 78 2d 76 61 6c 69 64 2d 70 20    6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 69 6e  | --index-valid-p.nov-documents.in | 
| 9b60 |  64 65 78 29 29 0a 20 20 20 20 28 65 72 72 6f 72    20 22 49 6e 76 61 6c 69 64 20 64 6f 63 75 6d 65  | dex)).....(error."Invalid.docume | 
| 9b80 |  6e 74 73 20 69 6e 64 65 78 22 29 29 0a 20 20 28    73 65 74 71 20 6e 6f 76 2d 64 6f 63 75 6d 65 6e  | nts.index"))...(setq.nov-documen | 
| 9ba0 |  74 73 2d 69 6e 64 65 78 20 69 6e 64 65 78 29 0a    20 20 28 6e 6f 76 2d 72 65 6e 64 65 72 2d 64 6f  | ts-index.index)...(nov-render-do | 
| 9bc0 |  63 75 6d 65 6e 74 29 0a 20 20 28 67 6f 74 6f 2d    63 68 61 72 20 70 6f 69 6e 74 29 29 0a 0a 3b 3b  | cument)...(goto-char.point))..;; | 
| 9be0 |  20 42 6f 6f 6b 6d 61 72 6b 20 69 6e 74 65 72 6f    70 0a 28 64 65 66 75 6e 20 6e 6f 76 2d 62 6f 6f  | .Bookmark.interop.(defun.nov-boo | 
| 9c00 |  6b 6d 61 72 6b 2d 6d 61 6b 65 2d 72 65 63 6f 72    64 20 20 28 29 0a 20 20 22 43 72 65 61 74 65 20  | kmark-make-record..()..."Create. | 
| 9c20 |  61 20 62 6f 6f 6b 6d 61 72 6b 20 45 50 55 42 20    72 65 63 6f 72 64 2e 22 0a 20 20 28 63 6f 6e 73  | a.bookmark.EPUB.record."...(cons | 
| 9c40 |  20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20    20 20 20 20 20 20 20 60 28 28 66 69 6c 65 6e 61  | .(buffer-name).........`((filena | 
| 9c60 |  6d 65 20 2e 20 2c 6e 6f 76 2d 66 69 6c 65 2d 6e    61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 28  | me...,nov-file-name)...........( | 
| 9c80 |  69 6e 64 65 78 20 2e 20 2c 6e 6f 76 2d 64 6f 63    75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 0a 20 20  | index...,nov-documents-index)... | 
| 9ca0 |  20 20 20 20 20 20 20 20 28 70 6f 73 69 74 69 6f    6e 20 2e 20 2c 28 70 6f 69 6e 74 29 29 0a 20 20  | ........(position...,(point))... | 
| 9cc0 |  20 20 20 20 20 20 20 20 28 68 61 6e 64 6c 65 72    20 2e 20 6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d  | ........(handler...nov-bookmark- | 
| 9ce0 |  6a 75 6d 70 2d 68 61 6e 64 6c 65 72 29 29 29 29    0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64  | jump-handler))))..;;;###autoload | 
| 9d00 |  0a 28 64 65 66 75 6e 20 6e 6f 76 2d 62 6f 6f 6b    6d 61 72 6b 2d 6a 75 6d 70 2d 68 61 6e 64 6c 65  | .(defun.nov-bookmark-jump-handle | 
| 9d20 |  72 20 28 62 6d 6b 29 0a 20 20 22 54 68 65 20 62    6f 6f 6b 6d 61 72 6b 20 68 61 6e 64 6c 65 72 2d  | r.(bmk)..."The.bookmark.handler- | 
| 9d40 |  66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72 66 61    63 65 20 66 6f 72 20 62 6f 6f 6b 6d 61 72 6b 20  | function.interface.for.bookmark. | 
| 9d60 |  42 4d 4b 2e 0a 0a 53 65 65 20 61 6c 73 6f 20 60    6e 6f 76 2d 62 6f 6f 6b 6d 61 72 6b 2d 6d 61 6b  | BMK...See.also.`nov-bookmark-mak | 
| 9d80 |  65 2d 72 65 63 6f 72 64 27 2e 22 0a 20 20 28 6c    65 74 20 28 28 66 69 6c 65 20 28 62 6f 6f 6b 6d  | e-record'."...(let.((file.(bookm | 
| 9da0 |  61 72 6b 2d 70 72 6f 70 2d 67 65 74 20 62 6d 6b    20 27 66 69 6c 65 6e 61 6d 65 29 29 0a 20 20 20  | ark-prop-get.bmk.'filename)).... | 
| 9dc0 |  20 20 20 20 20 28 69 6e 64 65 78 20 28 62 6f 6f    6b 6d 61 72 6b 2d 70 72 6f 70 2d 67 65 74 20 62  | .....(index.(bookmark-prop-get.b | 
| 9de0 |  6d 6b 20 27 69 6e 64 65 78 29 29 0a 20 20 20 20    20 20 20 20 28 70 6f 73 69 74 69 6f 6e 20 28 62  | mk.'index)).........(position.(b | 
| 9e00 |  6f 6f 6b 6d 61 72 6b 2d 70 72 6f 70 2d 67 65 74    20 62 6d 6b 20 27 70 6f 73 69 74 69 6f 6e 29 29  | ookmark-prop-get.bmk.'position)) | 
| 9e20 |  29 0a 20 20 20 20 28 6e 6f 76 2d 2d 66 69 6e 64    2d 66 69 6c 65 20 66 69 6c 65 20 69 6e 64 65 78  | ).....(nov--find-file.file.index | 
| 9e40 |  20 70 6f 73 69 74 69 6f 6e 29 29 29 0a 0a 0c 0a    3b 3b 3b 20 4f 72 67 20 69 6e 74 65 72 6f 70 0a  | .position)))....;;;.Org.interop. | 
| 9e60 |  0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a    28 64 65 66 75 6e 20 6e 6f 76 2d 6f 72 67 2d 6c  | .;;;###autoload.(defun.nov-org-l | 
| 9e80 |  69 6e 6b 2d 66 6f 6c 6c 6f 77 20 28 70 61 74 68    29 0a 20 20 22 46 6f 6c 6c 6f 77 20 6e 6f 76 3a  | ink-follow.(path)..."Follow.nov: | 
| 9ea0 |  20 6c 69 6e 6b 20 64 65 73 69 67 6e 61 74 65 64    20 62 79 20 50 41 54 48 2e 22 0a 20 20 28 69 66  | .link.designated.by.PATH."...(if | 
| 9ec0 |  20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22    5e 5c 5c 28 2e 2a 5c 5c 29 3a 3a 5c 5c 28 5b 30  | .(string-match."^\\(.*\\)::\\([0 | 
| 9ee0 |  2d 39 5d 2b 5c 5c 29 3a 5c 5c 28 5b 30 2d 39 5d    2b 5c 5c 29 24 22 20 70 61 74 68 29 0a 20 20 20  | -9]+\\):\\([0-9]+\\)$".path).... | 
| 9f00 |  20 20 20 28 6c 65 74 20 28 28 66 69 6c 65 20 28    6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 70  | ...(let.((file.(match-string.1.p | 
| 9f20 |  61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20    20 20 28 69 6e 64 65 78 20 28 73 74 72 69 6e 67  | ath)).............(index.(string | 
| 9f40 |  2d 74 6f 2d 6e 75 6d 62 65 72 20 28 6d 61 74 63    68 2d 73 74 72 69 6e 67 20 32 20 70 61 74 68 29  | -to-number.(match-string.2.path) | 
| 9f60 |  29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28    70 6f 69 6e 74 20 28 73 74 72 69 6e 67 2d 74 6f  | )).............(point.(string-to | 
| 9f80 |  2d 6e 75 6d 62 65 72 20 28 6d 61 74 63 68 2d 73    74 72 69 6e 67 20 33 20 70 61 74 68 29 29 29 29  | -number.(match-string.3.path)))) | 
| 9fa0 |  0a 20 20 20 20 20 20 20 20 28 6e 6f 76 2d 2d 66    69 6e 64 2d 66 69 6c 65 20 66 69 6c 65 20 69 6e  | .........(nov--find-file.file.in | 
| 9fc0 |  64 65 78 20 70 6f 69 6e 74 29 29 0a 20 20 20 20    28 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20  | dex.point)).....(error."Invalid. | 
| 9fe0 |  6e 6f 76 2e 65 6c 20 6c 69 6e 6b 22 29 29 29 0a    0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a  | nov.el.link")))..;;;###autoload. | 
| a000 |  28 64 65 66 75 6e 20 6e 6f 76 2d 6f 72 67 2d 6c    69 6e 6b 2d 73 74 6f 72 65 20 28 29 0a 20 20 22  | (defun.nov-org-link-store.()..." | 
| a020 |  53 74 6f 72 65 20 63 75 72 72 65 6e 74 20 45 50    55 42 20 6c 6f 63 61 74 69 6f 6e 20 61 73 20 6e  | Store.current.EPUB.location.as.n | 
| a040 |  6f 76 3a 20 6c 69 6e 6b 2e 22 0a 20 20 28 77 68    65 6e 20 28 61 6e 64 20 28 65 71 20 6d 61 6a 6f  | ov:.link."...(when.(and.(eq.majo | 
| a060 |  72 2d 6d 6f 64 65 20 27 6e 6f 76 2d 6d 6f 64 65    29 20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 29  | r-mode.'nov-mode).nov-file-name) | 
| a080 |  0a 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20    28 69 6e 74 65 67 65 72 70 20 6e 6f 76 2d 64 6f  | .....(when.(not.(integerp.nov-do | 
| a0a0 |  63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 29 0a    20 20 20 20 20 20 28 73 65 74 71 20 6e 6f 76 2d  | cuments-index)).......(setq.nov- | 
| a0c0 |  64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20    30 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6f  | documents-index.0)).....(let.((o | 
| a0e0 |  72 67 2d 73 74 6f 72 65 2d 70 72 6f 70 73 2d 66    75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20  | rg-store-props-function......... | 
| a100 |  20 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20    27 6f 72 67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 2d  | ...(if.(fboundp.'org-link-store- | 
| a120 |  70 72 6f 70 73 29 0a 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 27 6f 72 67 2d 6c 69 6e 6b 2d  | props)................'org-link- | 
| a140 |  73 74 6f 72 65 2d 70 72 6f 70 73 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 27 6f 72 67 2d 73 74  | store-props..............'org-st | 
| a160 |  6f 72 65 2d 6c 69 6e 6b 2d 70 72 6f 70 73 29 29    0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 6b  | ore-link-props))...........(link | 
| a180 |  20 28 66 6f 72 6d 61 74 20 22 6e 6f 76 3a 25 73    3a 3a 25 64 3a 25 64 22 0a 20 20 20 20 20 20 20  | .(format."nov:%s::%d:%d"........ | 
| a1a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 6e 6f 76 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20  | .................nov-file-name.. | 
| a1c0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 6e 6f 76 2d 64 6f 63 75 6d  | .......................nov-docum | 
| a1e0 |  65 6e 74 73 2d 69 6e 64 65 78 0a 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ents-index...................... | 
| a200 |  20 20 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20    20 20 20 20 20 20 20 28 64 65 73 63 72 69 70 74  | ...(point)))...........(descript | 
| a220 |  69 6f 6e 20 28 6f 72 20 28 61 6c 69 73 74 2d 67    65 74 20 27 74 69 74 6c 65 20 6e 6f 76 2d 6d 65  | ion.(or.(alist-get.'title.nov-me | 
| a240 |  74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | tadata)......................... | 
| a260 |  20 20 20 28 66 6f 72 6d 61 74 20 22 45 50 55 42    20 66 69 6c 65 20 61 74 20 25 73 22 20 6e 6f 76  | ...(format."EPUB.file.at.%s".nov | 
| a280 |  2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 29 0a 20    20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 6f 72  | -file-name)))).......(funcall.or | 
| a2a0 |  67 2d 73 74 6f 72 65 2d 70 72 6f 70 73 2d 66 75    6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20  | g-store-props-function.......... | 
| a2c0 |  20 20 20 20 20 20 3a 74 79 70 65 20 22 6e 6f 76    22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  | ......:type."nov"............... | 
| a2e0 |  20 3a 6c 69 6e 6b 20 6c 69 6e 6b 0a 20 20 20 20    20 20 20 20 20 20 20 20 20 20 20 3a 61 75 74 68  | .:link.link................:auth | 
| a300 |  6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 27 63    72 65 61 74 6f 72 20 6e 6f 76 2d 6d 65 74 61 64  | or.(alist-get.'creator.nov-metad | 
| a320 |  61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 3a 6c 61 6e 67 75 61 67 65 20 28 61  | ata)................:language.(a | 
| a340 |  6c 69 73 74 2d 67 65 74 20 27 6c 61 6e 67 75 61    67 65 20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29  | list-get.'language.nov-metadata) | 
| a360 |  0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3a 69 6e 69 74 69 61 6c 20 28 61 6c 69 73 74 2d  | ................:initial.(alist- | 
| a380 |  67 65 74 20 27 64 65 73 63 72 69 70 74 69 6f 6e    20 6e 6f 76 2d 6d 65 74 61 64 61 74 61 29 0a 20  | get.'description.nov-metadata).. | 
| a3a0 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70    75 62 6c 69 73 68 65 72 20 28 61 6c 69 73 74 2d  | ..............:publisher.(alist- | 
| a3c0 |  67 65 74 20 27 70 75 62 6c 69 73 68 65 72 20 6e    6f 76 2d 6d 65 74 61 64 61 74 61 29 0a 20 20 20  | get.'publisher.nov-metadata).... | 
| a3e0 |  20 20 20 20 20 20 20 20 20 20 20 20 3a 64 65 73    63 72 69 70 74 69 6f 6e 20 64 65 73 63 72 69 70  | ............:description.descrip | 
| a400 |  74 69 6f 6e 29 29 29 29 0a 0a 3b 3b 3b 23 23 23    61 75 74 6f 6c 6f 61 64 0a 28 77 69 74 68 2d 65  | tion))))..;;;###autoload.(with-e | 
| a420 |  76 61 6c 2d 61 66 74 65 72 2d 6c 6f 61 64 20 27    6f 72 67 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28  | val-after-load.'org...(cond....( | 
| a440 |  28 66 62 6f 75 6e 64 70 20 27 6f 72 67 2d 6c 69    6e 6b 2d 73 65 74 2d 70 61 72 61 6d 65 74 65 72  | (fboundp.'org-link-set-parameter | 
| a460 |  73 29 0a 20 20 20 20 28 6f 72 67 2d 6c 69 6e 6b    2d 73 65 74 2d 70 61 72 61 6d 65 74 65 72 73 0a  | s).....(org-link-set-parameters. | 
| a480 |  20 20 20 20 20 22 6e 6f 76 22 0a 20 20 20 20 20    3a 66 6f 6c 6c 6f 77 20 27 6e 6f 76 2d 6f 72 67  | ....."nov"......:follow.'nov-org | 
| a4a0 |  2d 6c 69 6e 6b 2d 66 6f 6c 6c 6f 77 0a 20 20 20    20 20 3a 73 74 6f 72 65 20 27 6e 6f 76 2d 6f 72  | -link-follow......:store.'nov-or | 
| a4c0 |  67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 29 29 0a 20    20 20 28 28 66 62 6f 75 6e 64 70 20 27 6f 72 67  | g-link-store))....((fboundp.'org | 
| a4e0 |  2d 61 64 64 2d 6c 69 6e 6b 2d 74 79 70 65 29 0a    20 20 20 20 28 6f 72 67 2d 61 64 64 2d 6c 69 6e  | -add-link-type).....(org-add-lin | 
| a500 |  6b 2d 74 79 70 65 20 22 6e 6f 76 22 20 27 6e 6f    76 2d 6f 72 67 2d 6c 69 6e 6b 2d 66 6f 6c 6c 6f  | k-type."nov".'nov-org-link-follo | 
| a520 |  77 29 0a 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b    20 27 6f 72 67 2d 73 74 6f 72 65 2d 6c 69 6e 6b  | w).....(add-hook.'org-store-link | 
| a540 |  2d 66 75 6e 63 74 69 6f 6e 73 20 27 6e 6f 76 2d    6f 72 67 2d 6c 69 6e 6b 2d 73 74 6f 72 65 29 29  | -functions.'nov-org-link-store)) | 
| a560 |  29 29 0a 0a 0c 0a 3b 3b 3b 20 49 6d 65 6e 75 20    69 6e 74 65 72 6f 70 0a 0a 28 64 65 66 75 6e 20  | ))....;;;.Imenu.interop..(defun. | 
| a580 |  6e 6f 76 2d 69 6d 65 6e 75 2d 67 6f 74 6f 2d 66    75 6e 63 74 69 6f 6e 20 28 5f 6e 61 6d 65 20 66  | nov-imenu-goto-function.(_name.f | 
| a5a0 |  69 6c 65 6e 61 6d 65 20 74 61 72 67 65 74 29 0a    20 20 22 56 69 73 69 74 20 69 6d 65 6e 75 20 69  | ilename.target)..."Visit.imenu.i | 
| a5c0 |  74 65 6d 20 75 73 69 6e 67 20 46 49 4c 45 4e 41    4d 45 20 61 6e 64 20 54 41 52 47 45 54 2e 22 0a  | tem.using.FILENAME.and.TARGET.". | 
| a5e0 |  20 20 3b 3b 20 4d 61 6b 65 20 73 75 72 65 20 66    69 6c 65 20 69 73 20 76 69 73 69 74 65 64 20 72  | ..;;.Make.sure.file.is.visited.r | 
| a600 |  65 6c 61 74 69 76 65 20 74 6f 20 74 6f 63 20 66    69 6c 65 2e 0a 20 20 28 6c 65 74 20 28 28 6e 6f  | elative.to.toc.file....(let.((no | 
| a620 |  76 2d 64 6f 63 75 6d 65 6e 74 73 2d 69 6e 64 65    78 20 30 29 29 0a 20 20 20 20 28 6e 6f 76 2d 76  | v-documents-index.0)).....(nov-v | 
| a640 |  69 73 69 74 2d 72 65 6c 61 74 69 76 65 2d 66 69    6c 65 20 66 69 6c 65 6e 61 6d 65 20 74 61 72 67  | isit-relative-file.filename.targ | 
| a660 |  65 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e 6f    76 2d 69 6d 65 6e 75 2d 63 72 65 61 74 65 2d 69  | et)))..(defun.nov-imenu-create-i | 
| a680 |  6e 64 65 78 20 28 29 0a 20 20 22 47 65 6e 65 72    61 74 65 20 49 6d 65 6e 75 20 69 6e 64 65 78 2e  | ndex.()..."Generate.Imenu.index. | 
| a6a0 |  22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 63 2d    70 61 74 68 20 28 63 64 72 20 28 61 72 65 66 20  | "...(let*.((toc-path.(cdr.(aref. | 
| a6c0 |  6e 6f 76 2d 64 6f 63 75 6d 65 6e 74 73 20 30 29    29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 63 78  | nov-documents.0)))..........(ncx | 
| a6e0 |  70 20 28 76 65 72 73 69 6f 6e 3c 20 6e 6f 76 2d    65 70 75 62 2d 76 65 72 73 69 6f 6e 20 22 33 2e  | p.(version<.nov-epub-version."3. | 
| a700 |  30 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 74    6f 63 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75  | 0"))..........(toc.(with-temp-bu | 
| a720 |  66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20    20 20 20 20 20 28 69 66 20 6e 63 78 70 0a 20 20  | ffer.................(if.ncxp... | 
| a740 |  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20 20 28 69 6e 73 65 72 74 20 28 6e 6f 76 2d 6e  | ..................(insert.(nov-n | 
| a760 |  63 78 2d 74 6f 2d 68 74 6d 6c 20 74 6f 63 2d 70    61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20  | cx-to-html.toc-path))........... | 
| a780 |  20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d    66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 74 6f  | ........(insert-file-contents.to | 
| a7a0 |  63 2d 70 61 74 68 29 29 0a 20 20 20 20 20 20 20    20 20 20 20 20 20 20 20 20 28 6c 69 62 78 6d 6c  | c-path)).................(libxml | 
| a7c0 |  2d 70 61 72 73 65 2d 68 74 6d 6c 2d 72 65 67 69    6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28  | -parse-html-region.(point-min).( | 
| a7e0 |  70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20    20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20  | point-max))))).....(mapcar...... | 
| a800 |  28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20    20 20 20 20 20 20 28 6c 65 74 20 28 28 68 72 65  | (lambda.(node)........(let.((hre | 
| a820 |  66 20 28 64 6f 6d 2d 61 74 74 72 20 6e 6f 64 65    20 27 68 72 65 66 29 29 0a 20 20 20 20 20 20 20  | f.(dom-attr.node.'href))........ | 
| a840 |  20 20 20 20 20 20 28 6c 61 62 65 6c 20 28 64 6f    6d 2d 74 65 78 74 20 6e 6f 64 65 29 29 29 0a 20  | ......(label.(dom-text.node))).. | 
| a860 |  20 20 20 20 20 20 20 20 28 73 65 71 2d 6c 65 74    20 28 66 69 6c 65 6e 61 6d 65 20 74 61 72 67 65  | ........(seq-let.(filename.targe | 
| a880 |  74 29 20 28 6e 6f 76 2d 75 72 6c 2d 66 69 6c 65    6e 61 6d 65 2d 61 6e 64 2d 74 61 72 67 65 74 20  | t).(nov-url-filename-and-target. | 
| a8a0 |  68 72 65 66 29 0a 20 20 20 20 20 20 20 20 20 20    20 28 6c 69 73 74 20 6c 61 62 65 6c 20 66 69 6c  | href)............(list.label.fil | 
| a8c0 |  65 6e 61 6d 65 20 27 6e 6f 76 2d 69 6d 65 6e 75    2d 67 6f 74 6f 2d 66 75 6e 63 74 69 6f 6e 20 74  | ename.'nov-imenu-goto-function.t | 
| a8e0 |  61 72 67 65 74 29 29 29 29 0a 20 20 20 20 20 28    65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20  | arget))))......(esxml-query-all. | 
| a900 |  22 61 22 20 74 6f 63 29 29 29 29 0a 0a 28 64 65    66 75 6e 20 6e 6f 76 2d 69 6d 65 6e 75 2d 73 65  | "a".toc))))..(defun.nov-imenu-se | 
| a920 |  74 75 70 20 28 29 0a 20 20 28 73 65 74 71 20 69    6d 65 6e 75 2d 63 72 65 61 74 65 2d 69 6e 64 65  | tup.()...(setq.imenu-create-inde | 
| a940 |  78 2d 66 75 6e 63 74 69 6f 6e 20 27 6e 6f 76 2d    69 6d 65 6e 75 2d 63 72 65 61 74 65 2d 69 6e 64  | x-function.'nov-imenu-create-ind | 
| a960 |  65 78 29 29 0a 28 61 64 64 2d 68 6f 6f 6b 20 27    6e 6f 76 2d 6d 6f 64 65 2d 68 6f 6f 6b 20 27 6e  | ex)).(add-hook.'nov-mode-hook.'n | 
| a980 |  6f 76 2d 69 6d 65 6e 75 2d 73 65 74 75 70 29 0a    0a 0c 0a 3b 3b 3b 20 6d 75 6c 74 69 2d 69 73 65  | ov-imenu-setup)....;;;.multi-ise | 
| a9a0 |  61 72 63 68 20 69 6e 74 65 72 6f 70 0a 0a 28 64    65 66 75 6e 20 6e 6f 76 2d 6d 69 73 65 61 72 63  | arch.interop..(defun.nov-misearc | 
| a9c0 |  68 2d 6e 65 78 74 2d 62 75 66 66 65 72 20 28 5f    62 75 66 66 65 72 20 77 72 61 70 29 0a 20 20 28  | h-next-buffer.(_buffer.wrap)...( | 
| a9e0 |  69 66 20 69 73 65 61 72 63 68 2d 66 6f 72 77 61    72 64 0a 20 20 20 20 20 20 28 63 6f 6e 64 0a 20  | if.isearch-forward.......(cond.. | 
| aa00 |  20 20 20 20 20 20 28 28 3c 20 6e 6f 76 2d 64 6f    63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 20 28 31  | ......((<.nov-documents-index.(1 | 
| aa20 |  2d 20 28 6c 65 6e 67 74 68 20 6e 6f 76 2d 64 6f    63 75 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20  | -.(length.nov-documents)))...... | 
| aa40 |  20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63    75 6d 65 6e 74 20 28 31 2b 20 6e 6f 76 2d 64 6f  | ...(nov-goto-document.(1+.nov-do | 
| aa60 |  63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 29 0a    20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74  | cuments-index)).........(current | 
| aa80 |  2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20    20 28 77 72 61 70 0a 20 20 20 20 20 20 20 20 28  | -buffer))........(wrap.........( | 
| aaa0 |  6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63 75 6d 65 6e    74 20 30 29 0a 20 20 20 20 20 20 20 20 6e 69 6c  | nov-goto-document.0).........nil | 
| aac0 |  29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20    20 20 28 28 3e 20 6e 6f 76 2d 64 6f 63 75 6d 65  | )).....(cond......((>.nov-docume | 
| aae0 |  6e 74 73 2d 69 6e 64 65 78 20 30 29 0a 20 20 20    20 20 20 28 6e 6f 76 2d 67 6f 74 6f 2d 64 6f 63  | nts-index.0).......(nov-goto-doc | 
| ab00 |  75 6d 65 6e 74 20 28 31 2d 20 6e 6f 76 2d 64 6f    63 75 6d 65 6e 74 73 2d 69 6e 64 65 78 29 29 0a  | ument.(1-.nov-documents-index)). | 
| ab20 |  20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62    75 66 66 65 72 29 29 0a 20 20 20 20 20 28 77 72  | ......(current-buffer))......(wr | 
| ab40 |  61 70 0a 20 20 20 20 20 20 28 6e 6f 76 2d 67 6f    74 6f 2d 64 6f 63 75 6d 65 6e 74 20 28 31 2d 20  | ap.......(nov-goto-document.(1-. | 
| ab60 |  28 6c 65 6e 67 74 68 20 6e 6f 76 2d 64 6f 63 75    6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 6e  | (length.nov-documents))).......n | 
| ab80 |  69 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 6e    6f 76 2d 6d 69 73 65 61 72 63 68 2d 73 65 74 75  | il))))..(defun.nov-misearch-setu | 
| aba0 |  70 20 28 29 0a 20 20 28 73 65 74 71 2d 6c 6f 63    61 6c 20 6d 75 6c 74 69 2d 69 73 65 61 72 63 68  | p.()...(setq-local.multi-isearch | 
| abc0 |  2d 6e 65 78 74 2d 62 75 66 66 65 72 2d 66 75 6e    63 74 69 6f 6e 20 23 27 6e 6f 76 2d 6d 69 73 65  | -next-buffer-function.#'nov-mise | 
| abe0 |  61 72 63 68 2d 6e 65 78 74 2d 62 75 66 66 65 72    29 29 0a 28 61 64 64 2d 68 6f 6f 6b 20 27 6e 6f  | arch-next-buffer)).(add-hook.'no | 
| ac00 |  76 2d 6d 6f 64 65 2d 68 6f 6f 6b 20 23 27 6e 6f    76 2d 6d 69 73 65 61 72 63 68 2d 73 65 74 75 70  | v-mode-hook.#'nov-misearch-setup | 
| ac20 |  29 0a 0a 28 70 72 6f 76 69 64 65 20 27 6e 6f 76    29 0a 3b 3b 3b 20 6e 6f 76 2e 65 6c 20 65 6e 64  | )..(provide.'nov).;;;.nov.el.end | 
| ac40 |  73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | s.here.......................... | 
| ac60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ac80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| aca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| acc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ace0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ad00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ad20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ad40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ad60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ad80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ada0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| adc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ade0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ae00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ae20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ae40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ae60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ae80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| aea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| aec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| aee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| af00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| af20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| af40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| af60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| af80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| afa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| afc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| afe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b000 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b060 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b080 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b0a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b0c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b0e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b1a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b1c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b1e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b200 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b260 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b280 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b2a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b2c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b2e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b300 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b320 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b3a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b3c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b3e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b400 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b420 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b460 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b480 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b4a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b4c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b4e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b500 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b520 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b5a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b5c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b5e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b600 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b660 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b680 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b6a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b6c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b6e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b7a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b7c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b7e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b800 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b820 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b840 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b860 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b880 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b8a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b8c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b8e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b900 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b920 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b940 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b960 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b980 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b9a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b9c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| b9e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ba00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ba20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ba40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ba60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| ba80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| baa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bac0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bae0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bb00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bb20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bb40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bb60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bb80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bba0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bbc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bbe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bc00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bc20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bc40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bc60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bc80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bca0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bcc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bce0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bd00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bd20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bd40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bd60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bd80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bda0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bdc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bde0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| be00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| be20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| be40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| be60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| be80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bea0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bec0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bee0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bf00 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bf20 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bf40 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bf60 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bf80 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bfa0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bfc0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| bfe0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c000 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c020 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c040 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c060 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c080 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c0a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c0c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c0e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c100 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c120 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c140 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c160 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c180 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c1a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c1c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c1e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c200 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c220 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c240 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c260 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c280 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c2a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c2c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c2e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c300 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c320 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c340 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c360 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c380 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c3a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c3c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c3e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c400 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c420 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c440 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c460 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c480 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c4a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c4c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c4e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c500 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c520 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c540 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c560 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c580 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c5a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c5c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c5e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c600 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c620 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c640 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c660 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c680 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c6a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c6c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c6e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c700 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c720 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c740 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c760 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c780 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c7a0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c7c0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ | 
| c7e0 |  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................ |