summaryrefslogtreecommitdiff
path: root/localrepo/esxml-20230308.2254.tar
blob: 10cf835f8a62b65216ebbe8d6438158192564489 (plain)
ofshex dumpascii
0000 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 00 00 00 00 00 00 00 00 00 00 00 00 esxml-20230308.2254/............
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 32 31 33 37 00 20 35 00 00 00 0000000.00000000000.012137..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 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 65 73 78 6d 6c 2d 70 6b 67 2e 65 6c esxml-20230308.2254/esxml-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 36 37 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 37 33 00 20 30 00 00 00 0000670.00000000000.014373..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 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 65 73 78 6d 6c 22 20 22 32 30 32 33 30 33 30 (define-package."esxml"."2023030
0420 38 2e 32 32 35 34 22 20 22 4c 69 62 72 61 72 79 20 66 6f 72 20 77 6f 72 6b 69 6e 67 20 77 69 74 8.2254"."Library.for.working.wit
0440 68 20 78 6d 6c 20 76 69 61 20 65 73 78 6d 6c 20 61 6e 64 20 73 78 6d 6c 22 0a 20 20 27 28 28 65 h.xml.via.esxml.and.sxml"...'((e
0460 6d 61 63 73 20 22 32 34 2e 31 22 29 0a 20 20 20 20 28 6b 76 20 22 30 2e 30 2e 35 22 29 0a 20 20 macs."24.1").....(kv."0.0.5")...
0480 20 20 28 63 6c 2d 6c 69 62 20 22 30 2e 35 22 29 29 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 32 32 35 ..(cl-lib."0.5"))...:commit."225
04a0 36 39 33 30 39 36 61 35 38 37 34 39 32 64 37 36 62 66 36 39 36 64 31 66 30 63 32 35 63 36 31 66 693096a587492d76bf696d1f0c25c61f
04c0 37 64 35 33 31 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 56 61 6e 79 61 20 49 7a 61 6b 7d531".:authors...'(("Vanya.Izak
04e0 73 6f 6e 61 73 2d 53 6d 69 74 68 20 3c 69 7a 61 6b 30 30 30 32 20 61 74 20 75 6d 6e 20 64 6f 74 sonas-Smith.<izak0002.at.umn.dot
0500 20 65 64 75 3e 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 0a 20 20 27 28 22 56 61 6e 79 .edu>"))...:maintainer...'("Vany
0520 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 22 29 0a 20 20 3a 6b 65 79 77 6f 72 64 73 0a a.Izaksonas-Smith")...:keywords.
0540 20 20 27 28 22 74 6f 6f 6c 73 22 20 22 6c 69 73 70 22 20 22 63 6f 6d 6d 22 29 0a 20 20 3a 75 72 ..'("tools"."lisp"."comm")...:ur
0560 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 6c 69 37 31 33 2f 65 73 l."https://github.com/tali713/es
0580 78 6d 6c 22 29 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6e 6f 2d xml").;;.Local.Variables:.;;.no-
05a0 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 byte-compile:.t.;;.End:.........
05c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 65 73 78 6d 6c 2d 71 75 65 72 79 2e esxml-20230308.2254/esxml-query.
0620 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 el..............................
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 30 37 30 34 30 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 36 33 00 20 30 00 00 00 0070406.00000000000.014763..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 65 73 78 6d 6c 2d 71 75 65 72 79 2e 65 6c 20 2d 2d 2d 20 73 65 6c 65 63 74 20 65 73 ;;;.esxml-query.el.---.select.es
0820 78 6d 6c 20 6e 6f 64 65 73 20 6a 51 75 65 72 79 2d 73 74 79 6c 65 0a 0a 3b 3b 20 43 6f 70 79 72 xml.nodes.jQuery-style..;;.Copyr
0840 69 67 68 74 20 28 43 29 20 32 30 31 37 20 56 61 73 69 6c 69 6a 20 53 63 68 6e 65 69 64 65 72 6d ight.(C).2017.Vasilij.Schneiderm
0860 61 6e 6e 20 3c 6d 61 69 6c 40 76 61 73 69 6c 69 6a 2e 64 65 3e 0a 0a 3b 3b 20 41 75 74 68 6f 72 ann.<mail@vasilij.de>..;;.Author
0880 3a 20 56 61 73 69 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 :.Vasilij.Schneidermann.<mail@va
08a0 73 69 6c 69 6a 2e 64 65 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 56 61 73 69 6c 69 6a silij.de>.;;.Maintainer:.Vasilij
08c0 20 53 63 68 6e 65 69 64 65 72 6d 61 6e 6e 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 30 2e 31 2e 31 .Schneidermann.;;.Version:.0.1.1
08e0 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 64 61 74 61 2c 20 6c 69 73 70 0a 3b 3b 20 50 61 63 6b .;;.Keywords:.data,.lisp.;;.Pack
0900 61 67 65 2d 52 65 71 75 69 72 65 73 3a 20 28 28 63 6c 2d 6c 69 62 20 22 30 2e 31 22 29 29 0a 3b age-Requires:.((cl-lib."0.1")).;
0920 3b 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 ;.;;.This.program.is.free.softwa
0940 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f re;.you.can.redistribute.it.and/
0960 6f 72 0a 3b 3b 20 6d 6f 64 69 66 79 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 or.;;.modify.it.under.the.terms.
0980 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 6e 73 of.the.GNU.General.Public.Licens
09a0 65 20 61 73 0a 3b 3b 20 70 75 62 6c 69 73 68 65 64 20 62 79 20 74 68 65 20 46 72 65 65 20 53 6f e.as.;;.published.by.the.Free.So
09c0 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f ftware.Foundation,.either.versio
09e0 6e 20 33 20 6f 66 20 74 68 65 0a 3b 3b 20 4c 69 63 65 6e 73 65 2c 20 6f 72 20 28 61 74 20 79 6f n.3.of.the.;;.License,.or.(at.yo
0a00 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b ur.option).any.later.version...;
0a20 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e ;.This.program.is.distributed.in
0a40 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c .the.hope.that.it.will.be.useful
0a60 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 ,.;;.but.WITHOUT.ANY.WARRANTY;.w
0a80 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 ithout.even.the.implied.warranty
0aa0 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 .of.;;.MERCHANTABILITY.or.FITNES
0ac0 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 S.FOR.A.PARTICULAR.PURPOSE...See
0ae0 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e .the.;;.GNU.General.Public.Licen
0b00 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f se.for.more.details...;;.You.sho
0b20 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 uld.have.received.a.copy.of.the.
0b40 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c GNU.General.Public.License.;;.al
0b60 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 ong.with.this.program...If.not,.
0b80 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 see.<http://www.gnu.org/licenses
0ba0 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 72 61 64 69 74 69 />...;;;.Commentary:..;;.Traditi
0bc0 6f 6e 61 6c 6c 79 20 70 65 6f 70 6c 65 20 70 69 63 6b 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f onally.people.pick.one.of.the.fo
0be0 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 6f 6e 73 20 77 68 65 6e 20 66 61 63 65 64 0a 3b 3b 20 77 69 llowing.options.when.faced.;;.wi
0c00 74 68 20 74 68 65 20 74 61 73 6b 20 6f 66 20 65 78 74 72 61 63 74 69 6e 67 20 64 61 74 61 20 66 th.the.task.of.extracting.data.f
0c20 72 6f 6d 20 58 4d 4c 20 69 6e 20 45 6d 61 63 73 20 4c 69 73 70 3a 0a 3b 3b 0a 3b 3b 20 2d 20 55 rom.XML.in.Emacs.Lisp:.;;.;;.-.U
0c40 73 69 6e 67 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6f 6e 20 74 68 65 20 sing.regular.expressions.on.the.
0c60 75 6e 70 61 72 73 65 64 20 64 6f 63 75 6d 65 6e 74 0a 3b 3b 20 2d 20 4d 61 6e 75 61 6c 20 74 72 unparsed.document.;;.-.Manual.tr
0c80 65 65 20 74 72 61 76 65 72 73 61 6c 20 77 69 74 68 20 60 61 73 73 6f 63 27 2c 20 60 63 61 72 27 ee.traversal.with.`assoc',.`car'
0ca0 20 61 6e 64 20 60 63 64 72 27 0a 3b 3b 0a 3b 3b 20 42 72 6f 77 73 65 72 73 20 66 61 63 65 64 20 .and.`cdr'.;;.;;.Browsers.faced.
0cc0 61 20 73 69 6d 69 6c 61 72 20 70 72 6f 62 6c 65 6d 20 75 6e 74 69 6c 20 6a 51 75 65 72 79 20 68 a.similar.problem.until.jQuery.h
0ce0 61 70 70 65 6e 65 64 2c 20 73 68 6f 72 74 6c 79 0a 3b 3b 20 61 66 74 65 72 77 61 72 64 73 20 74 appened,.shortly.;;.afterwards.t
0d00 68 65 79 20 73 74 61 72 74 65 64 20 70 72 6f 76 69 64 69 6e 67 20 74 68 65 20 60 6e 6f 64 65 2e hey.started.providing.the.`node.
0d20 71 75 65 72 79 53 65 6c 65 63 74 6f 72 27 20 61 6e 64 0a 3b 3b 20 60 6e 6f 64 65 2e 71 75 65 72 querySelector'.and.;;.`node.quer
0d40 79 53 65 6c 65 63 74 6f 72 41 6c 6c 27 20 41 50 49 20 66 6f 72 20 72 65 74 72 69 65 76 69 6e 67 ySelectorAll'.API.for.retrieving
0d60 20 6f 6e 65 20 6f 72 20 61 6c 6c 20 6e 6f 64 65 73 0a 3b 3b 20 6d 61 74 63 68 69 6e 67 20 61 20 .one.or.all.nodes.;;.matching.a.
0d80 67 69 76 65 6e 20 43 53 53 20 73 65 6c 65 63 74 6f 72 2e 20 20 54 68 69 73 20 63 6f 64 65 20 69 given.CSS.selector...This.code.i
0da0 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 73 61 6d 65 20 41 50 49 0a 3b 3b 20 77 69 74 68 20 74 mplements.the.same.API.;;.with.t
0dc0 68 65 20 60 65 73 78 6d 6c 2d 71 75 65 72 79 27 20 61 6e 64 20 60 65 73 78 6d 6c 2d 71 75 65 72 he.`esxml-query'.and.`esxml-quer
0de0 79 2d 61 6c 6c 27 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 0a 3b 3b 20 66 6f 6c 6c 6f 77 y-all'.functions...The.;;.follow
0e00 69 6e 67 20 74 61 62 6c 65 20 73 75 6d 6d 61 72 69 7a 65 73 20 74 68 65 20 63 75 72 72 65 6e 74 ing.table.summarizes.the.current
0e20 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6d 6f 64 69 66 69 65 72 73 20 61 6e 64 0a 3b 3b 20 63 6f ly.supported.modifiers.and.;;.co
0e40 6d 62 69 6e 61 74 6f 72 73 3a 0a 3b 3b 0a 3b 3b 20 7c 20 4e 61 6d 65 20 20 20 20 20 20 20 20 20 mbinators:.;;.;;.|.Name.........
0e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 53 75 70 70 6f 72 74 65 ......................|.Supporte
0e80 64 3f 20 7c 20 53 79 6e 74 61 78 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d d?.|.Syntax......|.;;.|---------
0ea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d ---------------------------+----
0ec0 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c 0a 3b 3b 20 7c 20 4e 61 6d --------+-------------|.;;.|.Nam
0ee0 65 73 70 61 63 65 73 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 espaces.........................
0f00 7c 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 7c 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 |.No.........|.foo|bar.....|.;;.
0f20 7c 20 43 6f 6d 6d 61 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.Commas........................
0f40 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 2c 20 62 61 72 20 20 20 20 .....|.Yes........|.foo,.bar....
0f60 7c 0a 3b 3b 20 7c 20 44 65 73 63 65 6e 64 61 6e 74 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 |.;;.|.Descendant.combinator....
0f80 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 6f 6f 20 62 61 72 ..........|.Yes........|.foo.bar
0fa0 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 43 68 69 6c 64 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 .....|.;;.|.Child.combinator....
0fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 66 6f ...............|.Yes........|.fo
0fe0 6f 3e 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 41 64 6a 61 63 65 6e 74 20 73 69 62 6c 69 6e o>bar.....|.;;.|.Adjacent.siblin
1000 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 20 g.combinator........|.No........
1020 20 7c 20 66 6f 6f 2b 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 47 65 6e 65 72 61 6c 20 73 69 .|.foo+bar.....|.;;.|.General.si
1040 62 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 bling.combinator.........|.No...
1060 20 20 20 20 20 20 7c 20 66 6f 6f 7e 62 61 72 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 55 6e 69 76 65 ......|.foo~bar.....|.;;.|.Unive
1080 72 73 61 6c 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 rsal.selector.................|.
10a0 59 65 73 20 20 20 20 20 20 20 20 7c 20 2a 20 20 20 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 Yes........|.*...........|.;;.|.
10c0 54 79 70 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Type.selector...................
10e0 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 74 61 67 20 20 20 20 20 20 20 20 20 7c 0a ...|.Yes........|.tag.........|.
1100 3b 3b 20 7c 20 49 44 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;;.|.ID.selector................
1120 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 23 66 6f 6f 20 20 20 20 20 ........|.Yes........|.#foo.....
1140 20 20 20 7c 0a 3b 3b 20 7c 20 43 6c 61 73 73 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 20 20 ...|.;;.|.Class.selector........
1160 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 2e 66 6f 6f .............|.Yes........|..foo
1180 20 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 41 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f ........|.;;.|.Attribute.selecto
11a0 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c r.................|.Yes........|
11c0 20 5b 66 6f 6f 5d 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 45 78 61 63 74 20 6d 61 74 63 68 20 .[foo].......|.;;.|.Exact.match.
11e0 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 attribute.selector.....|.Yes....
1200 20 20 20 20 7c 20 5b 66 6f 6f 3d 62 61 72 5d 20 20 20 7c 0a 3b 3b 20 7c 20 50 72 65 66 69 78 20 ....|.[foo=bar]...|.;;.|.Prefix.
1220 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 7c 20 59 65 match.attribute.selector....|.Ye
1240 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 5e 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 53 75 s........|.[foo^=bar]..|.;;.|.Su
1260 66 66 69 78 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c 65 63 74 6f 72 20 20 20 ffix.match.attribute.selector...
1280 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 24 3d 62 61 72 5d 20 20 7c 0a 3b 3b .|.Yes........|.[foo$=bar]..|.;;
12a0 20 7c 20 53 75 62 73 74 72 69 6e 67 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 73 65 6c .|.Substring.match.attribute.sel
12c0 65 63 74 6f 72 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 2a 3d 62 61 72 5d 20 ector.|.Yes........|.[foo*=bar].
12e0 20 7c 0a 3b 3b 20 7c 20 49 6e 63 6c 75 64 65 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 65 20 .|.;;.|.Include.match.attribute.
1300 73 65 6c 65 63 74 6f 72 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b 66 6f 6f 7e 3d selector...|.Yes........|.[foo~=
1320 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 44 61 73 68 20 6d 61 74 63 68 20 61 74 74 72 69 62 75 74 bar]..|.;;.|.Dash.match.attribut
1340 65 20 73 65 6c 65 63 74 6f 72 20 20 20 20 20 20 7c 20 59 65 73 20 20 20 20 20 20 20 20 7c 20 5b e.selector......|.Yes........|.[
1360 66 6f 6f 7c 3d 62 61 72 5d 20 20 7c 0a 3b 3b 20 7c 20 41 74 74 72 69 62 75 74 65 20 73 65 6c 65 foo|=bar]..|.;;.|.Attribute.sele
1380 63 74 6f 72 20 6d 6f 64 69 66 69 65 72 73 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 20 20 20 20 20 ctor.modifiers.......|.No.......
13a0 20 20 7c 20 5b 66 6f 6f 3d 62 61 72 20 69 5d 20 7c 0a 3b 3b 20 7c 20 50 73 65 75 64 6f 20 65 6c ..|.[foo=bar.i].|.;;.|.Pseudo.el
13c0 65 6d 65 6e 74 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 4e 6f 20 20 ements....................|.No..
13e0 20 20 20 20 20 20 20 7c 20 3a 3a 66 6f 6f 20 20 20 20 20 20 20 7c 0a 3b 3b 20 7c 20 50 73 65 75 .......|.::foo.......|.;;.|.Pseu
1400 64 6f 20 63 6c 61 73 73 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c do.classes.....................|
1420 20 4e 6f 20 20 20 20 20 20 20 20 20 7c 20 3a 66 6f 6f 20 20 20 20 20 20 20 20 7c 0a 0a 3b 3b 3b .No.........|.:foo........|..;;;
1440 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 0a 0a 0c 0a 3b 3b 3b .Code:..(require.'cl-lib)....;;;
1460 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 70 61 72 73 69 6e 67 0a 0a 3b 3b 20 68 74 74 70 73 3a .CSS.selector.parsing..;;.https:
1480 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 73 65 6c 65 63 74 6f 72 73 2f 23 77 33 63 73 65 //www.w3.org/TR/selectors/#w3cse
14a0 6c 67 72 61 6d 6d 61 72 0a 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 lgrammar.;;.https://www.w3.org/T
14c0 52 2f 73 65 6c 65 63 74 6f 72 73 34 2f 23 67 72 61 6d 6d 61 72 0a 3b 3b 20 68 74 74 70 73 3a 2f R/selectors4/#grammar.;;.https:/
14e0 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 32 30 30 33 2f 57 44 2d 63 73 73 33 2d 73 79 6e 74 /www.w3.org/TR/2003/WD-css3-synt
1500 61 78 2d 32 30 30 33 30 38 31 33 2f 23 64 65 74 61 69 6c 65 64 2d 67 72 61 6d 6d 61 72 0a 3b 3b ax-20030813/#detailed-grammar.;;
1520 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 32 30 30 33 2f 57 44 2d 63 .https://www.w3.org/TR/2003/WD-c
1540 73 73 33 2d 73 79 6e 74 61 78 2d 32 30 30 33 30 38 31 33 2f 23 74 6f 6b 65 6e 69 7a 61 74 69 6f ss3-syntax-20030813/#tokenizatio
1560 6e 0a 0a 3b 3b 20 79 6f 75 20 6d 69 67 68 74 20 62 65 20 77 6f 6e 64 65 72 69 6e 67 20 77 68 79 n..;;.you.might.be.wondering.why
1580 20 49 27 6d 20 75 73 69 6e 67 20 62 6f 74 68 20 6c 65 76 65 6c 20 33 20 61 6e 64 20 34 20 73 74 .I'm.using.both.level.3.and.4.st
15a0 61 6e 64 61 72 64 73 2c 0a 3b 3b 20 77 65 6c 6c 2c 20 74 68 65 20 6c 65 76 65 6c 20 33 20 6f 6e andards,.;;.well,.the.level.3.on
15c0 65 20 68 61 73 20 61 20 62 75 67 67 79 20 6c 65 78 65 72 20 73 65 63 74 69 6f 6e 20 77 68 65 72 e.has.a.buggy.lexer.section.wher
15e0 65 61 73 20 6c 65 76 65 6c 20 34 0a 3b 3b 20 6f 6d 69 74 73 20 63 72 75 63 69 61 6c 20 70 61 72 eas.level.4.;;.omits.crucial.par
1600 73 65 72 20 64 65 66 69 6e 69 74 69 6f 6e 73 2c 20 73 6f 20 62 6f 74 68 20 68 61 76 65 20 74 6f ser.definitions,.so.both.have.to
1620 20 62 65 20 75 73 65 64 2e 2e 2e 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 3a 6e .be.used.....;;.TODO:.support.:n
1640 6f 74 0a 28 64 65 66 76 61 72 20 65 73 78 6d 6c 2d 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 74 ot.(defvar.esxml--css-selector-t
1660 6f 6b 65 6e 2d 6d 61 74 63 68 65 72 73 0a 20 20 28 6c 65 74 2a 20 28 28 68 20 22 5b 30 2d 39 61 oken-matchers...(let*.((h."[0-9a
1680 2d 66 5d 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6c 20 22 5c 6e 5c 5c 7c 5c 72 5c 6e 5c 5c 7c -f]")..........(nl."\n\\|\r\n\\|
16a0 5c 72 5c 5c 7c 5c 66 22 29 0a 20 20 20 20 20 20 20 20 20 28 6e 6f 6e 61 73 63 69 69 20 22 5b 5c \r\\|\f")..........(nonascii."[\
16c0 32 30 30 2d 5c 55 30 30 31 30 66 66 66 66 5d 22 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 69 63 200-\U0010ffff]")..........(unic
16e0 6f 64 65 20 28 66 6f 72 6d 61 74 20 22 5c 5c 5c 5c 25 73 5c 5c 7b 31 2c 36 5c 5c 7d 5b 20 5c 74 ode.(format."\\\\%s\\{1,6\\}[.\t
1700 5c 72 5c 6e 5c 66 5d 3f 22 20 68 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 73 63 61 70 65 20 28 \r\n\f]?".h))..........(escape.(
1720 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 5c 5c 5c 5c 5b 20 2d 7e 5c 32 30 format."\\(?:%s\\)\\|\\\\[.-~\20
1740 30 2d 5c 55 30 30 31 30 66 66 66 66 5d 22 20 75 6e 69 63 6f 64 65 29 29 0a 20 20 20 20 20 20 20 0-\U0010ffff]".unicode))........
1760 20 20 28 6e 6d 73 74 61 72 74 20 28 66 6f 72 6d 61 74 20 22 5b 61 2d 7a 5f 5d 5c 5c 7c 25 73 5c ..(nmstart.(format."[a-z_]\\|%s\
1780 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 22 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 61 70 65 29 29 0a \|\\(?:%s\\)".nonascii.escape)).
17a0 20 20 20 20 20 20 20 20 20 28 6e 6d 63 68 61 72 20 28 66 6f 72 6d 61 74 20 22 5b 61 2d 7a 30 2d .........(nmchar.(format."[a-z0-
17c0 39 5f 2d 5d 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 22 20 6e 6f 6e 61 73 63 69 69 9_-]\\|%s\\|\\(?:%s\\)".nonascii
17e0 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 75 6d 20 22 5b 30 2d 39 5d 2b 5c .escape))..........(num."[0-9]+\
1800 5c 7c 5b 30 2d 39 5d 2a 5c 5c 2e 5b 30 2d 39 5d 2b 22 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 \|[0-9]*\\.[0-9]+")..........(st
1820 72 69 6e 67 31 20 28 66 6f 72 6d 61 74 20 22 5c 22 5c 5c 28 3f 3a 5b 5c 74 20 21 23 24 25 25 26 ring1.(format."\"\\(?:[\t.!#$%%&
1840 28 2d 7e 5d 5c 5c 7c 5c 5c 5c 5c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 27 5c 5c 7c 25 73 5c 5c (-~]\\|\\\\\\(?:%s\\)\\|'\\|%s\\
1860 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c 5c 29 2a 5c 22 22 20 6e 6c 20 6e 6f 6e 61 73 63 69 69 20 65 |\\(?:%s\\)\\)*\"".nl.nonascii.e
1880 73 63 61 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 32 20 28 66 6f 72 6d 61 scape))..........(string2.(forma
18a0 74 20 22 27 5c 5c 28 3f 3a 5b 5c 74 20 21 23 24 25 25 26 28 2d 7e 5d 5c 5c 7c 5c 5c 5c 5c 5c 5c t."'\\(?:[\t.!#$%%&(-~]\\|\\\\\\
18c0 28 3f 3a 25 73 5c 5c 29 5c 5c 7c 5c 22 5c 5c 7c 25 73 5c 5c 7c 5c 5c 28 3f 3a 25 73 5c 5c 29 5c (?:%s\\)\\|\"\\|%s\\|\\(?:%s\\)\
18e0 5c 29 2a 27 22 20 6e 6c 20 6e 6f 6e 61 73 63 69 69 20 65 73 63 61 70 65 29 29 0a 20 20 20 20 20 \)*'".nl.nonascii.escape))......
1900 20 20 20 20 28 69 64 65 6e 74 20 28 66 6f 72 6d 61 74 20 22 5b 2d 5d 3f 5c 5c 28 3f 3a 25 73 5c ....(ident.(format."[-]?\\(?:%s\
1920 5c 29 5c 5c 28 3f 3a 25 73 5c 5c 29 2a 22 20 6e 6d 73 74 61 72 74 20 6e 6d 63 68 61 72 29 29 0a \)\\(?:%s\\)*".nmstart.nmchar)).
1940 20 20 20 20 20 20 20 20 20 28 75 6e 69 74 20 28 66 6f 72 6d 61 74 20 22 5b 2d 5d 3f 5c 5c 28 3f .........(unit.(format."[-]?\\(?
1960 3a 25 73 5c 5c 29 5c 5c 28 3f 3a 25 73 5c 5c 29 2b 22 20 6e 6d 73 74 61 72 74 20 6e 6d 63 68 61 :%s\\)\\(?:%s\\)+".nmstart.nmcha
1980 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f r))..........(name.(format."\\(?
19a0 3a 25 73 5c 5c 29 2b 22 20 6e 6d 63 68 61 72 29 29 29 0a 0a 20 20 20 20 60 28 28 77 68 69 74 65 :%s\\)+".nmchar)))......`((white
19c0 73 70 61 63 65 20 2e 20 22 5b 20 5c 74 5c 72 5c 6e 5c 66 5d 2b 22 29 0a 20 20 20 20 20 20 28 73 space..."[.\t\r\n\f]+").......(s
19e0 74 72 69 6e 67 20 2e 20 2c 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 7c 25 73 5c 5c tring...,(format."\\(?:%s\\|%s\\
1a00 29 22 20 73 74 72 69 6e 67 31 20 73 74 72 69 6e 67 32 29 29 0a 20 20 20 20 20 20 28 69 64 65 6e )".string1.string2)).......(iden
1a20 74 20 2e 20 2c 69 64 65 6e 74 29 0a 20 20 20 20 20 20 28 68 61 73 68 20 2e 20 2c 28 66 6f 72 6d t...,ident).......(hash...,(form
1a40 61 74 20 22 23 25 73 22 20 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 at."#%s".name)).......(function.
1a60 2e 20 2c 28 66 6f 72 6d 61 74 20 22 25 73 28 22 20 69 64 65 6e 74 29 29 0a 20 20 20 20 20 20 28 ..,(format."%s(".ident)).......(
1a80 6e 75 6d 62 65 72 20 2e 20 2c 6e 75 6d 29 0a 20 20 20 20 20 20 28 64 69 6d 65 6e 73 69 6f 6e 20 number...,num).......(dimension.
1aa0 2e 20 2c 28 66 6f 72 6d 61 74 20 22 5c 5c 28 3f 3a 25 73 5c 5c 29 25 73 22 20 6e 75 6d 20 75 6e ..,(format."\\(?:%s\\)%s".num.un
1ac0 69 74 29 29 0a 20 20 20 20 20 20 28 70 72 65 66 69 78 2d 6d 61 74 63 68 20 2e 20 22 5c 5c 5e 3d it)).......(prefix-match..."\\^=
1ae0 22 29 0a 20 20 20 20 20 20 28 73 75 66 66 69 78 2d 6d 61 74 63 68 20 2e 20 22 5c 5c 24 3d 22 29 ").......(suffix-match..."\\$=")
1b00 0a 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 2e 20 22 5c 5c 2a 3d 22 .......(substring-match..."\\*="
1b20 29 0a 20 20 20 20 20 20 28 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 20 2e 20 22 7e 3d 22 29 0a 20 ).......(include-match..."~=")..
1b40 20 20 20 20 20 28 64 61 73 68 2d 6d 61 74 63 68 20 2e 20 22 7c 3d 22 29 0a 20 20 20 20 20 20 28 .....(dash-match..."|=").......(
1b60 63 6f 6d 6d 61 20 2e 20 22 2c 22 29 0a 20 20 20 20 20 20 28 67 74 20 2e 20 22 3e 22 29 0a 20 20 comma...",").......(gt...">")...
1b80 20 20 20 20 28 70 6c 75 73 20 2e 20 22 5c 5c 2b 22 29 0a 20 20 20 20 20 20 28 6d 69 6e 75 73 20 ....(plus..."\\+").......(minus.
1ba0 2e 20 22 2d 22 29 0a 20 20 20 20 20 20 28 74 69 6c 64 65 20 2e 20 22 7e 22 29 0a 20 20 20 20 20 .."-").......(tilde..."~")......
1bc0 20 28 61 73 74 65 72 69 73 6b 20 2e 20 22 5c 5c 2a 22 29 0a 20 20 20 20 20 20 28 70 65 72 69 6f .(asterisk..."\\*").......(perio
1be0 64 20 2e 20 22 5c 5c 2e 22 29 0a 20 20 20 20 20 20 28 65 71 75 61 6c 73 20 2e 20 22 3d 22 29 0a d..."\\.").......(equals..."=").
1c00 20 20 20 20 20 20 28 63 6f 6c 6f 6e 20 2e 20 22 3a 22 29 0a 20 20 20 20 20 20 28 6c 62 72 61 63 ......(colon...":").......(lbrac
1c20 6b 65 74 20 2e 20 22 5c 5c 5b 22 29 0a 20 20 20 20 20 20 28 72 62 72 61 63 6b 65 74 20 2e 20 22 ket..."\\[").......(rbracket..."
1c40 5c 5c 5d 22 29 0a 20 20 20 20 20 20 28 72 70 61 72 65 6e 20 2e 20 22 29 22 29 29 29 29 0a 0a 28 \\]").......(rparen...")"))))..(
1c60 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 69 7a 65 2d 63 73 73 2d 73 65 6c 65 63 74 defun.esxml--tokenize-css-select
1c80 6f 72 20 28 73 74 72 69 6e 67 29 0a 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 or.(string)...(let.(result).....
1ca0 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 72 74 20 (with-temp-buffer.......(insert.
1cc0 73 74 72 69 6e 67 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 string).......(goto-char.(point-
1ce0 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 28 65 6f 62 70 29 29 0a min)).......(while.(not.(eobp)).
1d00 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 78 2d 6c 65 6e 67 74 68 20 30 29 0a 20 20 20 ........(let.((max-length.0)....
1d20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 6e 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 ...........longest)...........(d
1d40 6f 6c 69 73 74 20 28 6d 61 74 63 68 65 72 20 65 73 78 6d 6c 2d 2d 63 73 73 2d 73 65 6c 65 63 74 olist.(matcher.esxml--css-select
1d60 6f 72 2d 74 6f 6b 65 6e 2d 6d 61 74 63 68 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 or-token-matchers).............(
1d80 6c 65 74 20 28 28 69 64 20 28 63 61 72 20 6d 61 74 63 68 65 72 29 29 0a 20 20 20 20 20 20 20 20 let.((id.(car.matcher)).........
1da0 20 20 20 20 20 20 20 20 20 20 28 72 65 20 28 63 64 72 20 6d 61 74 63 68 65 72 29 29 29 0a 20 20 ..........(re.(cdr.matcher)))...
1dc0 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 72 65 ............(when.(looking-at.re
1de0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 74 6f 6b 65 6e 20 ).................(let*.((token.
1e00 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (match-string.0))...............
1e20 20 20 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 28 6c 65 6e 67 74 68 20 74 6f 6b 65 6e 29 29 .........(length.(length.token))
1e40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 6c 65 6e )...................(when.(>.len
1e60 67 74 68 20 6d 61 78 2d 6c 65 6e 67 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gth.max-length).................
1e80 20 20 20 20 28 73 65 74 71 20 6d 61 78 2d 6c 65 6e 67 74 68 20 6c 65 6e 67 74 68 29 0a 20 20 20 ....(setq.max-length.length)....
1ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6c 6f 6e 67 65 73 74 20 28 .................(setq.longest.(
1ec0 63 6f 6e 73 20 69 64 20 74 6f 6b 65 6e 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 cons.id.token)))))))...........(
1ee0 77 68 65 6e 20 28 6e 6f 74 20 6c 6f 6e 67 65 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 when.(not.longest).............(
1f00 65 72 72 6f 72 20 22 49 6e 76 61 6c 69 64 20 74 6f 6b 65 6e 20 64 65 74 65 63 74 65 64 3a 20 25 error."Invalid.token.detected:.%
1f20 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 s"....................(buffer-su
1f40 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 bstring.(point).(point-max))))..
1f60 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6c 6f 6e 67 65 73 74 20 72 65 73 75 6c 74 29 0a 20 .........(push.longest.result)..
1f80 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 2b 20 28 70 6f 69 6e 74 29 20 6d .........(goto-char.(+.(point).m
1fa0 61 78 2d 6c 65 6e 67 74 68 29 29 29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 ax-length))))).....(nreverse.res
1fc0 75 6c 74 29 29 29 0a 0a 3b 3b 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 63 72 ult)))..;;.the.alternative.is.cr
1fe0 65 61 74 69 6e 67 20 61 20 6d 75 74 61 62 6c 65 20 6f 62 6a 65 63 74 20 77 69 74 68 20 70 65 65 eating.a.mutable.object.with.pee
2000 6b 2f 6e 65 78 74 20 6d 65 74 68 6f 64 73 0a 3b 3b 20 61 6e 64 20 70 61 73 73 69 6e 67 20 69 74 k/next.methods.;;.and.passing.it
2020 20 61 72 6f 75 6e 64 2c 20 73 6f 20 49 20 63 68 6f 73 65 20 74 68 65 20 6f 6e 65 20 72 65 71 75 .around,.so.I.chose.the.one.requ
2040 69 72 69 6e 67 20 6c 65 73 73 20 74 79 70 69 6e 67 2c 20 61 0a 3b 3b 20 64 79 6e 61 6d 69 63 61 iring.less.typing,.a.;;.dynamica
2060 6c 6c 79 20 62 6f 75 6e 64 20 76 61 72 69 61 62 6c 65 20 3a 3c 0a 0a 28 64 65 66 76 61 72 20 65 lly.bound.variable.:<..(defvar.e
2080 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 73 75 sxml--token-stream)..;;.TODO:.su
20a0 70 70 6f 72 74 20 3a 6e 6f 74 0a 3b 3b 20 63 73 73 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 pport.:not.;;.css-selector:.;;..
20c0 20 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 3b 0a 3b 3b 20 63 73 73 2d 73 65 6c 65 63 .css-selector-list;.;;.css-selec
20e0 74 6f 72 2d 6c 69 73 74 3a 0a 3b 3b 20 20 20 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 tor-list:.;;...complex-css-selec
2100 74 6f 72 20 5b 20 63 6f 6d 6d 61 20 77 68 69 74 65 73 70 61 63 65 2a 20 63 6f 6d 70 6c 65 78 2d tor.[.comma.whitespace*.complex-
2120 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 5d 2a 3b 0a 3b 3b 20 63 6f 6d 70 6c 65 78 2d 63 73 73 2d css-selector.]*;.;;.complex-css-
2140 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 65 6c 65 selector:.;;...compound-css-sele
2160 63 74 6f 72 20 5b 20 63 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 20 63 6f 6d 70 6f 75 6e 64 2d 63 ctor.[.css-combinator.compound-c
2180 73 73 2d 73 65 6c 65 63 74 6f 72 20 5d 2a 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 ss-selector.]*.whitespace*;.;;.c
21a0 73 73 2d 63 6f 6d 62 69 6e 61 74 6f 72 3a 0a 3b 3b 20 20 20 77 68 69 74 65 73 70 61 63 65 2b 20 ss-combinator:.;;...whitespace+.
21c0 7c 20 77 68 69 74 65 73 70 61 63 65 2a 20 5b 20 27 3e 27 20 7c 20 27 2b 27 20 7c 20 27 7e 27 20 |.whitespace*.[.'>'.|.'+'.|.'~'.
21e0 5d 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 ].whitespace*;.;;.compound-css-s
2200 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 elector:.;;...css-type-selector.
2220 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 20 7c 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2b 3b 0a 3b css-modifier*.|.css-modifier+;.;
2240 3b 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 ;.css-type-selector:.;;...IDENT.
2260 7c 20 2a 3b 0a 3b 3b 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 3a 0a 3b 3b 20 20 20 20 63 73 73 2d |.*;.;;.css-modifier:.;;....css-
2280 69 64 20 7c 20 63 73 73 2d 63 6c 61 73 73 20 7c 20 63 73 73 2d 61 74 74 72 69 62 20 7c 20 63 73 id.|.css-class.|.css-attrib.|.cs
22a0 73 2d 70 73 65 75 64 6f 3b 0a 3b 3b 20 63 73 73 2d 69 64 3a 0a 3b 3b 20 20 20 48 41 53 48 3b 0a s-pseudo;.;;.css-id:.;;...HASH;.
22c0 3b 3b 20 63 73 73 2d 63 6c 61 73 73 3a 0a 3b 3b 20 20 20 27 2e 27 20 49 44 45 4e 54 3b 0a 3b 3b ;;.css-class:.;;...'.'.IDENT;.;;
22e0 20 63 73 73 2d 61 74 74 72 69 62 3a 0a 3b 3b 20 20 20 27 5b 27 20 77 68 69 74 65 73 70 61 63 65 .css-attrib:.;;...'['.whitespace
2300 2a 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 27 5d 27 0a 3b 3b 20 20 20 7c 20 27 5b 27 *.css-attrib-name.']'.;;...|.'['
2320 20 77 68 69 74 65 73 70 61 63 65 2a 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 63 73 73 .whitespace*.css-attrib-name.css
2340 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 20 63 73 73 2d 61 74 74 72 69 62 2d 76 61 6c 75 65 20 77 -attrib-match.css-attrib-value.w
2360 68 69 74 65 73 70 61 63 65 2a 20 27 5d 27 3b 0a 3b 3b 20 63 73 73 2d 61 74 74 72 69 62 2d 6e 61 hitespace*.']';.;;.css-attrib-na
2380 6d 65 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 me:.;;...IDENT.whitespace*;.;;.c
23a0 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 3a 0a 3b 3b 20 20 20 5b 20 27 3d 27 20 7c 20 50 52 ss-attrib-match:.;;...[.'='.|.PR
23c0 45 46 49 58 2d 4d 41 54 43 48 20 7c 20 53 55 46 46 49 58 2d 4d 41 54 43 48 20 7c 20 53 55 42 53 EFIX-MATCH.|.SUFFIX-MATCH.|.SUBS
23e0 54 52 49 4e 47 2d 4d 41 54 43 48 20 7c 20 49 4e 43 4c 55 44 45 2d 4d 41 54 43 48 20 7c 20 44 41 TRING-MATCH.|.INCLUDE-MATCH.|.DA
2400 53 48 2d 4d 41 54 43 48 20 5d 20 77 68 69 74 65 73 70 61 63 65 2a 3b 0a 3b 3b 20 63 73 73 2d 61 SH-MATCH.].whitespace*;.;;.css-a
2420 74 74 72 69 62 2d 76 61 6c 75 65 3a 0a 3b 3b 20 20 20 49 44 45 4e 54 20 7c 20 53 54 52 49 4e 47 ttrib-value:.;;...IDENT.|.STRING
2440 3b 0a 3b 3b 20 63 73 73 2d 70 73 65 75 64 6f 3a 0a 3b 3b 20 20 20 27 3a 27 20 27 3a 27 3f 20 5b ;.;;.css-pseudo:.;;...':'.':'?.[
2460 20 49 44 45 4e 54 20 7c 20 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 20 5d .IDENT.|.css-functional-pseudo.]
2480 3b 0a 3b 3b 20 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 3a 0a 3b 3b 20 20 ;.;;.css-functional-pseudo:.;;..
24a0 20 46 55 4e 43 54 49 4f 4e 20 77 68 69 74 65 73 70 61 63 65 2a 20 5b 20 63 73 73 2d 65 78 70 72 .FUNCTION.whitespace*.[.css-expr
24c0 65 73 73 69 6f 6e 20 77 68 69 74 65 73 70 61 63 65 2a 20 5d 2b 20 27 29 27 3b 0a 3b 3b 20 63 73 ession.whitespace*.]+.')';.;;.cs
24e0 73 2d 65 78 70 72 65 73 73 69 6f 6e 3a 0a 3b 3b 20 20 20 27 2b 27 20 7c 20 27 2d 27 20 7c 20 44 s-expression:.;;...'+'.|.'-'.|.D
2500 49 4d 45 4e 53 49 4f 4e 20 7c 20 4e 55 4d 42 45 52 20 7c 20 53 54 52 49 4e 47 20 7c 20 49 44 45 IMENSION.|.NUMBER.|.STRING.|.IDE
2520 4e 54 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 79 2d 63 73 73 2d 65 73 63 61 70 NT..(defun.esxml-query-css-escap
2540 65 20 28 73 74 72 69 6e 67 29 0a 20 20 22 52 65 74 75 72 6e 73 20 65 73 63 61 70 65 64 20 76 65 e.(string)..."Returns.escaped.ve
2560 72 73 69 6f 6e 20 6f 66 20 53 54 52 49 4e 47 20 66 6f 72 20 75 73 65 20 69 6e 20 73 65 6c 65 63 rsion.of.STRING.for.use.in.selec
2580 74 6f 72 73 2e 0a 54 68 65 20 6c 6f 67 69 63 20 75 73 65 64 20 68 65 72 65 20 63 6f 72 72 65 73 tors..The.logic.used.here.corres
25a0 70 6f 6e 64 73 20 74 6f 20 74 68 65 20 43 53 53 2e 65 73 63 61 70 65 20 41 50 49 20 61 73 0a 73 ponds.to.the.CSS.escape.API.as.s
25c0 70 65 63 69 66 69 65 64 20 69 6e 20 68 74 74 70 73 3a 2f 2f 64 72 61 66 74 73 2e 63 73 73 77 67 pecified.in.https://drafts.csswg
25e0 2e 6f 72 67 2f 63 73 73 6f 6d 2f 23 74 68 65 2d 63 73 73 2e 65 73 63 61 70 65 28 29 2d 6d 65 74 .org/cssom/#the-css.escape()-met
2600 68 6f 64 2e 22 0a 20 20 28 6c 65 74 20 28 63 68 61 72 73 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 hod."...(let.(chars).....(dotime
2620 73 20 28 69 20 28 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 28 6c 65 74 s.(i.(length.string)).......(let
2640 2a 20 28 28 63 68 61 72 20 28 61 72 65 66 20 73 74 72 69 6e 67 20 69 29 29 0a 20 20 20 20 20 20 *.((char.(aref.string.i)).......
2660 20 20 20 20 20 20 20 28 75 6e 70 72 69 6e 74 61 62 6c 65 70 20 28 6f 72 20 28 61 6e 64 20 28 3e .......(unprintablep.(or.(and.(>
2680 3d 20 63 68 61 72 20 3f 5c 75 30 30 30 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 31 66 =.char.?\u0001).(<=.char.?\u001f
26a0 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 20 ))..............................
26c0 20 20 28 3d 20 63 68 61 72 20 3f 5c 75 30 30 37 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..(=.char.?\u007f)))............
26e0 20 20 28 6e 6f 6e 61 73 63 69 69 70 20 28 3e 3d 20 63 68 61 72 20 3f 5c 75 30 30 38 30 29 29 0a ..(nonasciip.(>=.char.?\u0080)).
2700 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 67 69 74 70 20 28 61 6e 64 20 28 3e 3d 20 63 68 .............(digitp.(and.(>=.ch
2720 61 72 20 3f 5c 75 30 30 33 30 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 33 39 29 29 29 0a ar.?\u0030).(<=.char.?\u0039))).
2740 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 70 70 65 72 70 20 28 61 6e 64 20 28 3e 3d 20 63 68 .............(upperp.(and.(>=.ch
2760 61 72 20 3f 5c 75 30 30 34 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 35 61 29 29 29 0a ar.?\u0041).(<=.char.?\u005a))).
2780 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 77 65 72 70 20 28 61 6e 64 20 28 3e 3d 20 63 68 .............(lowerp.(and.(>=.ch
27a0 61 72 20 3f 5c 75 30 30 36 31 29 20 28 3c 3d 20 63 68 61 72 20 3f 5c 75 30 30 37 61 29 29 29 29 ar.?\u0061).(<=.char.?\u007a))))
27c0 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 3d 20 63 68 61 72 .........(cond..........((=.char
27e0 20 3f 5c 75 30 30 30 30 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 3f 5c 75 66 66 66 .?\u0000)...........(push.?\ufff
2800 64 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 6e 70 72 69 6e 74 61 62 6c 65 70 d.chars))..........(unprintablep
2820 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 ...........(dolist.(char.(string
2840 2d 74 6f 2d 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 -to-list.(format."\\%x.".char)))
2860 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 .............(push.char.chars)))
2880 0a 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 30 29 20 64 69 67 69 74 70 29 0a ..........((and.(=.i.0).digitp).
28a0 20 20 20 20 20 20 20 20 20 20 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 2d ..........(dolist.(char.(string-
28c0 74 6f 2d 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 0a to-list.(format."\\%x.".char))).
28e0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 0a ............(push.char.chars))).
2900 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3d 20 69 20 31 29 20 64 69 67 69 74 70 20 28 3d .........((and.(=.i.1).digitp.(=
2920 20 28 61 72 65 66 20 73 74 72 69 6e 67 20 30 29 20 3f 2d 29 29 0a 20 20 20 20 20 20 20 20 20 20 .(aref.string.0).?-))...........
2940 28 64 6f 6c 69 73 74 20 28 63 68 61 72 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 73 74 20 28 66 (dolist.(char.(string-to-list.(f
2960 6f 72 6d 61 74 20 22 5c 5c 25 78 20 22 20 63 68 61 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ormat."\\%x.".char)))...........
2980 20 20 28 70 75 73 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 ..(push.char.chars)))..........(
29a0 28 61 6e 64 20 28 3d 20 69 20 30 29 20 28 3d 20 63 68 61 72 20 3f 2d 29 20 28 3d 20 28 6c 65 6e (and.(=.i.0).(=.char.?-).(=.(len
29c0 67 74 68 20 73 74 72 69 6e 67 29 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 gth.string).1))...........(push.
29e0 3f 5c 5c 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 61 72 20 ?\\.chars)...........(push.char.
2a00 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 28 6f 72 20 6e 6f 6e 61 73 63 69 69 70 20 chars))..........((or.nonasciip.
2a20 28 3d 20 63 68 61 72 20 3f 2d 29 20 28 3d 20 63 68 61 72 20 3f 5f 29 20 64 69 67 69 74 70 20 75 (=.char.?-).(=.char.?_).digitp.u
2a40 70 70 65 72 70 20 6c 6f 77 65 72 70 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 68 pperp.lowerp)...........(push.ch
2a60 61 72 20 63 68 61 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 ar.chars))..........(t..........
2a80 20 28 70 75 73 68 20 3f 5c 5c 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 .(push.?\\.chars)...........(pus
2aa0 68 20 63 68 61 72 20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6e h.char.chars))))).....(concat.(n
2ac0 72 65 76 65 72 73 65 20 63 68 61 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d reverse.chars))))..(defun.esxml-
2ae0 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 73 74 72 69 6e 67 29 0a 20 -parse-css-identifier.(string)..
2b00 20 3b 3b 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 63 73 73 2d 73 79 .;;.https://www.w3.org/TR/css-sy
2b20 6e 74 61 78 2d 33 2f 23 63 6f 6e 73 75 6d 65 2d 73 74 72 69 6e 67 2d 74 6f 6b 65 6e 0a 20 20 28 ntax-3/#consume-string-token...(
2b40 6c 65 74 2a 20 28 28 63 6f 64 65 2d 70 6f 69 6e 74 73 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6c 69 let*.((code-points.(string-to-li
2b60 73 74 20 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 63 68 61 72 73 0a 20 20 20 20 20 st.string))..........chars......
2b80 20 20 20 20 74 6f 6b 65 6e 29 0a 20 20 20 20 28 77 68 69 6c 65 20 63 6f 64 65 2d 70 6f 69 6e 74 ....token).....(while.code-point
2ba0 73 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f s.......(let.((char.(pop.code-po
2bc0 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 3d 20 63 68 61 72 20 3f 5c 5c 29 ints))).........(if.(=.char.?\\)
2be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 70 6f 70 20 63 6f .............(let.((char.(pop.co
2c00 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 de-points)))...............(cond
2c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 63 68 61 72 29 29 0a 20 20 20 ................((not.char))....
2c40 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 63 68 61 72 20 3f 5c 6e 29 29 0a 20 20 20 20 20 ............((=.char.?\n))......
2c60 20 20 20 20 20 20 20 20 20 20 28 28 6f 72 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 30 29 ..........((or.(and.(>=.char.?0)
2c80 20 28 3c 3d 20 63 68 61 72 20 3f 39 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(<=.char.?9))..................
2ca0 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 61 29 20 28 3c 3d 20 63 68 61 72 20 3f 66 ...(and.(>=.char.?a).(<=.char.?f
2cc0 29 29 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 3e 3d 20 )).....................(and.(>=.
2ce0 63 68 61 72 20 3f 41 29 20 28 3c 3d 20 63 68 61 72 20 3f 46 29 29 29 0a 20 20 20 20 20 20 20 20 char.?A).(<=.char.?F))).........
2d00 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........(let.((i.0).............
2d20 20 20 20 20 20 20 20 20 20 20 28 68 65 78 2d 63 68 61 72 73 20 28 6c 69 73 74 20 63 68 61 72 29 ..........(hex-chars.(list.char)
2d40 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 ))...................(while.(and
2d60 20 28 3c 20 69 20 35 29 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 .(<.i.5).code-points)...........
2d80 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 61 72 20 28 63 61 72 20 63 6f 64 65 2d ..........(let.((char.(car.code-
2da0 70 6f 69 6e 74 73 29 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 points))).......................
2dc0 28 69 66 20 28 6f 72 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 30 29 20 28 3c 3d 20 63 68 (if.(or.(and.(>=.char.?0).(<=.ch
2de0 61 72 20 3f 39 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 ar.?9)).........................
2e00 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 61 29 20 28 3c 3d 20 63 68 61 72 ......(and.(>=.char.?a).(<=.char
2e20 20 3f 66 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 .?f))...........................
2e40 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 68 61 72 20 3f 41 29 20 28 3c 3d 20 63 68 61 72 20 3f ....(and.(>=.char.?A).(<=.char.?
2e60 46 29 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 28 F)))...........................(
2e80 70 75 73 68 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 20 68 65 78 2d 63 68 61 72 73 push.(pop.code-points).hex-chars
2ea0 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 28 73 65 74 71 20 ).........................(setq.
2ec0 69 20 35 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 i.5))).....................(setq
2ee0 20 69 20 28 31 2b 20 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c .i.(1+.i)))...................(l
2f00 65 74 20 28 28 63 68 61 72 20 28 63 61 72 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 et.((char.(car.code-points)))...
2f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 63 68 61 ..................(when.(and.cha
2f40 72 20 28 3d 20 63 68 61 72 20 3f 5c 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r.(=.char.?\s)).................
2f60 20 20 20 20 20 20 28 70 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 73 29 29 29 0a 20 20 20 20 20 20 ......(pop.code-points))).......
2f80 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 68 65 78 2d 74 6f 6b 65 6e 20 28 63 ............(let*.((hex-token.(c
2fa0 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 68 65 78 2d 63 68 61 72 73 29 29 29 0a 20 20 20 oncat.(nreverse.hex-chars)))....
2fc0 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 64 65 2d 70 6f 69 6e ......................(code-poin
2fe0 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 68 65 78 2d 74 6f 6b 65 6e 20 31 36 t.(string-to-number.hex-token.16
3000 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 ))).....................(if.(or.
3020 28 7a 65 72 6f 70 20 63 6f 64 65 2d 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (zerop.code-point)..............
3040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 63 6f 64 65 2d 70 6f 69 ...............(and.(>=.code-poi
3060 6e 74 20 3f 5c 75 64 38 30 30 29 20 28 3c 3d 20 63 6f 64 65 2d 70 6f 69 6e 74 20 3f 5c 75 64 66 nt.?\ud800).(<=.code-point.?\udf
3080 66 66 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 ff))............................
30a0 20 28 3e 20 63 6f 64 65 2d 70 6f 69 6e 74 20 3f 5c 55 30 30 31 30 66 66 66 66 29 29 0a 20 20 20 .(>.code-point.?\U0010ffff))....
30c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 3f 5c 75 66 66 .....................(push.?\uff
30e0 66 64 20 63 68 61 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 fd.chars).......................
3100 28 70 75 73 68 20 63 6f 64 65 2d 70 6f 69 6e 74 20 63 68 61 72 73 29 29 29 29 29 0a 20 20 20 20 (push.code-point.chars))))).....
3120 20 20 20 20 20 20 20 20 20 20 20 28 74 20 3b 20 75 6e 73 70 65 63 69 66 69 65 64 3a 20 6e 6f 6e ...........(t.;.unspecified:.non
3140 2d 68 65 78 20 64 69 67 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 -hex.digit.................(push
3160 20 63 68 61 72 20 63 68 61 72 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 .char.chars))))...........(push.
3180 63 68 61 72 20 63 68 61 72 73 29 29 29 29 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 6e 72 65 76 char.chars)))).....(concat.(nrev
31a0 65 72 73 65 20 63 68 61 72 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 erse.chars))))..(defun.esxml--pa
31c0 72 73 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 20 28 73 74 72 69 6e 67 29 0a rse-css-string-literal.(string).
31e0 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 ..(esxml--parse-css-identifier.(
3200 73 75 62 73 74 72 69 6e 67 20 73 74 72 69 6e 67 20 31 20 2d 31 29 29 29 0a 0a 28 64 65 66 6d 61 substring.string.1.-1)))..(defma
3220 63 72 6f 20 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 cro.esxml--with-parse-shorthands
3240 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 60 28 63 6c 2d 6d 61 63 72 6f 6c 65 74 20 28 28 .(&rest.body)...`(cl-macrolet.((
3260 70 65 65 6b 20 28 29 20 27 28 63 61 72 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 peek.().'(car.esxml--token-strea
3280 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 65 78 74 20 28 29 20 27 28 m))..................(next.().'(
32a0 70 6f 70 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 29 29 0a 20 20 20 20 20 20 pop.esxml--token-stream)).......
32c0 20 20 20 20 20 20 20 20 20 20 20 28 61 63 63 65 70 74 20 28 74 79 70 65 29 20 60 28 61 6e 64 20 ...........(accept.(type).`(and.
32e0 28 70 65 65 6b 29 20 28 65 71 20 28 63 61 72 20 28 70 65 65 6b 29 29 20 2c 74 79 70 65 29 0a 20 (peek).(eq.(car.(peek)).,type)..
3300 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 ................................
3320 20 20 20 20 20 28 63 64 72 20 28 6e 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(cdr.(next)))).............
3340 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 20 28 29 20 27 28 77 68 69 6c 65 20 .....(eat-whitespace.().'(while.
3360 28 61 63 63 65 70 74 20 27 77 68 69 74 65 73 70 61 63 65 29 29 29 29 0a 20 20 20 20 20 2c 40 62 (accept.'whitespace))))......,@b
3380 6f 64 79 29 29 0a 28 64 65 66 2d 65 64 65 62 75 67 2d 73 70 65 63 20 65 73 78 6d 6c 2d 2d 77 69 ody)).(def-edebug-spec.esxml--wi
33a0 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 20 28 62 6f 64 79 29 29 0a 0a 28 64 65 th-parse-shorthands.(body))..(de
33c0 66 75 6e 20 65 73 78 6d 6c 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 73 74 fun.esxml-parse-css-selector.(st
33e0 72 69 6e 67 29 0a 20 20 22 50 61 72 73 65 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 53 54 52 49 ring)..."Parse.CSS.selector.STRI
3400 4e 47 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 69 73 74 73 2e 0a 45 61 63 68 20 61 NG.into.a.list.of.alists..Each.a
3420 6c 69 73 74 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 63 6f 6d 70 6c 65 78 20 43 53 53 20 73 65 list.represents.a.complex.CSS.se
3440 6c 65 63 74 6f 72 2e 20 20 54 68 65 20 72 65 73 75 6c 74 20 63 61 6e 20 62 65 0a 70 61 73 73 65 lector...The.result.can.be.passe
3460 64 20 74 6f 20 60 65 73 78 6d 6c 2d 71 75 65 72 79 27 20 61 6e 64 20 60 65 73 78 6d 6c 2d 71 75 d.to.`esxml-query'.and.`esxml-qu
3480 65 72 79 2d 61 6c 6c 27 20 61 73 20 74 68 65 20 73 65 6c 65 63 74 6f 72 0a 61 72 67 75 6d 65 6e ery-all'.as.the.selector.argumen
34a0 74 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 t."...(let*.((esxml--token-strea
34c0 6d 20 28 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 69 7a 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 m.(esxml--tokenize-css-selector.
34e0 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 65 73 78 6d 6c string))..........(result.(esxml
3500 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 2d 6c 69 73 74 29 29 29 0a 20 20 20 --parse-css-selector-list)))....
3520 20 28 77 68 65 6e 20 65 73 78 6d 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 .(when.esxml--token-stream......
3540 20 28 65 72 72 6f 72 20 22 54 72 61 69 6c 69 6e 67 20 67 61 72 62 61 67 65 3a 20 25 73 22 0a 20 .(error."Trailing.garbage:.%s"..
3560 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 63 64 72 20 65 73 78 6d ............(mapconcat.'cdr.esxm
3580 6c 2d 2d 74 6f 6b 65 6e 2d 73 74 72 65 61 6d 20 22 22 29 29 29 0a 20 20 20 20 72 65 73 75 6c 74 l--token-stream.""))).....result
35a0 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 ))..(defun.esxml--parse-css-sele
35c0 63 74 6f 72 2d 6c 69 73 74 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 ctor-list.()...(esxml--with-pars
35e0 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 66 69 72 73 74 20 28 65 73 e-shorthands....(let.((first.(es
3600 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 xml--parse-complex-css-selector)
3620 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 6e )..........result)......(when.(n
3640 6f 74 20 66 69 72 73 74 29 0a 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 ot.first)........(error."Expecte
3660 64 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 73 65 6c 65 63 74 6f 72 22 29 29 0a 20 20 20 20 20 d.at.least.one.selector"))......
3680 28 70 75 73 68 20 66 69 72 73 74 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 20 28 77 68 69 6c 65 (push.first.result).......(while
36a0 20 28 61 63 63 65 70 74 20 27 63 6f 6d 6d 61 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 .(accept.'comma)........(eat-whi
36c0 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 65 6c 65 63 74 6f 72 20 tespace)........(let.((selector.
36e0 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 (esxml--parse-complex-css-select
3700 6f 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 73 65 6c 65 63 74 or)))..........(when.(not.select
3720 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 or)............(error."Expected.
3740 73 65 6c 65 63 74 6f 72 20 61 66 74 65 72 20 63 6f 6d 6d 61 22 29 29 0a 20 20 20 20 20 20 20 20 selector.after.comma")).........
3760 20 28 70 75 73 68 20 73 65 6c 65 63 74 6f 72 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 28 .(push.selector.result)))......(
3780 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d nreverse.result))))..(defun.esxm
37a0 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6c 65 78 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 29 l--parse-complex-css-selector.()
37c0 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 ...(esxml--with-parse-shorthands
37e0 0a 20 20 20 28 6c 65 74 20 28 28 66 69 72 73 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 ....(let.((first.(esxml--parse-c
3800 6f 6d 70 6f 75 6e 64 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 ompound-css-selector))..........
3820 72 65 73 75 6c 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 28 77 68 65 6e 20 66 69 72 73 74 0a 20 20 result.done)......(when.first...
3840 20 20 20 20 20 28 70 75 73 68 20 66 69 72 73 74 20 72 65 73 75 6c 74 29 0a 0a 20 20 20 20 20 20 .....(push.first.result)........
3860 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 .(while.(not.done)..........(let
3880 20 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d .((combinator.(esxml--parse-css-
38a0 63 6f 6d 62 69 6e 61 74 6f 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 6f 6d combinator)))............(if.com
38c0 62 69 6e 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6f binator................(let.((co
38e0 6d 70 6f 75 6e 64 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 2d 63 73 mpound.(esxml--parse-compound-cs
3900 73 2d 73 65 6c 65 63 74 6f 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 s-selector)))..................(
3920 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6f 75 6e 64 cond...................(compound
3940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 ....................(setq.result
3960 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 63 6f 6d 70 6f 75 6e 64 20 63 6f 6d 62 69 6e 61 74 .(append.(list.compound.combinat
3980 6f 72 29 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 or).result)))...................
39a0 3b 3b 20 61 6c 6c 6f 77 20 77 68 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 63 6f 6d 6d 61 ;;.allow.whitespace.before.comma
39c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 20 28 63 61 ...................((not.(eq.(ca
39e0 72 20 28 70 65 65 6b 29 29 20 27 63 6f 6d 6d 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 r.(peek)).'comma))..............
3a00 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 54 72 61 69 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f ......(error."Trailing.combinato
3a20 72 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f 6e 65 20 74 r"))))..............(setq.done.t
3a40 29 29 29 29 0a 20 20 20 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 ))))........(nreverse.result))))
3a60 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 63 6f 6d 62 69 )..(defun.esxml--parse-css-combi
3a80 6e 61 74 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 nator.()...(esxml--with-parse-sh
3aa0 6f 72 74 68 61 6e 64 73 0a 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 77 68 69 74 65 73 70 61 63 65 2d orthands....;;.NOTE:.whitespace-
3ac0 73 75 72 72 6f 75 6e 64 65 64 20 63 6f 6d 62 69 6e 61 74 6f 72 73 20 61 72 65 20 64 69 73 74 69 surrounded.combinators.are.disti
3ae0 6e 67 75 69 73 68 65 64 20 66 72 6f 6d 0a 20 20 20 3b 3b 20 77 68 69 74 65 73 70 61 63 65 2d 6f nguished.from....;;.whitespace-o
3b00 6e 6c 79 20 6f 6e 65 73 20 62 79 20 63 68 65 63 6b 69 6e 67 20 77 68 65 74 68 65 72 20 74 68 65 nly.ones.by.checking.whether.the
3b20 72 65 20 68 61 73 20 62 65 65 6e 0a 20 20 20 3b 3b 20 77 68 69 74 65 73 70 61 63 65 20 66 6f 6c re.has.been....;;.whitespace.fol
3b40 6c 6f 77 65 64 20 62 79 20 61 20 6e 6f 6e 2d 62 6c 61 6e 6b 20 63 6f 6d 62 69 6e 61 74 6f 72 0a lowed.by.a.non-blank.combinator.
3b60 20 20 20 28 6c 65 74 20 28 28 6c 65 61 64 69 6e 67 2d 77 68 69 74 65 73 70 61 63 65 2d 70 20 28 ...(let.((leading-whitespace-p.(
3b80 65 71 20 28 63 61 72 20 28 70 65 65 6b 29 29 20 27 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 eq.(car.(peek)).'whitespace))...
3ba0 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 .......result)......(eat-whitesp
3bc0 61 63 65 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 28 70 65 65 6b ace)......(let.((type.(car.(peek
3be0 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 ))))........(cond.........((memb
3c00 65 72 20 74 79 70 65 20 27 28 67 74 20 70 6c 75 73 20 74 69 6c 64 65 29 29 0a 20 20 20 20 20 20 er.type.'(gt.plus.tilde)).......
3c20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 ...(next)..........(cond........
3c40 20 20 20 28 28 65 71 20 74 79 70 65 20 27 67 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 ...((eq.type.'gt)............(se
3c60 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 63 68 69 6c 64 29 tq.result.'((combinator...child)
3c80 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 70 6c 75 73 29 0a 20 )))...........((eq.type.'plus)..
3ca0 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e ..........(setq.result.'((combin
3cc0 61 74 6f 72 20 2e 20 64 69 72 65 63 74 2d 73 69 62 6c 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 ator...direct-sibling)))).......
3ce0 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 74 69 6c 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 ....((eq.type.'tilde)...........
3d00 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 69 6e .(setq.result.'((combinator...in
3d20 64 69 72 65 63 74 2d 73 69 62 6c 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 61 direct-sibling)))))..........(ea
3d40 74 2d 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 61 64 69 6e 67 2d t-whitespace)).........(leading-
3d60 77 68 69 74 65 73 70 61 63 65 2d 70 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 whitespace-p..........(setq.resu
3d80 6c 74 20 27 28 28 63 6f 6d 62 69 6e 61 74 6f 72 20 2e 20 64 65 73 63 65 6e 64 61 6e 74 29 29 29 lt.'((combinator...descendant)))
3da0 29 0a 20 20 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 0a 20 20 20 20 20 72 65 73 75 6c 74 29 ).........(t.nil)))......result)
3dc0 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 6f 6d 70 6f 75 6e 64 ))..(defun.esxml--parse-compound
3de0 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d -css-selector.()...(esxml--with-
3e00 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 2d parse-shorthands....(let.((type-
3e20 73 65 6c 65 63 74 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 74 79 70 65 2d selector.(esxml--parse-css-type-
3e40 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 64 6f 6e 65 0a 20 20 20 20 20 20 20 selector))..........done........
3e60 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 63 73 73 2d 74 79 70 65 ..result)......;;.NOTE:.css-type
3e80 2d 73 65 6c 65 63 74 6f 72 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 20 7c 20 63 73 73 2d 6d 6f -selector.css-modifier*.|.css-mo
3ea0 64 69 66 69 65 72 2b 3b 20 69 73 0a 20 20 20 20 20 3b 3b 20 65 71 75 69 76 61 6c 65 6e 74 20 74 difier+;.is......;;.equivalent.t
3ec0 6f 3a 20 5b 20 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 7c 20 63 73 73 2d 6d 6f 64 o:.[.css-type-selector.|.css-mod
3ee0 69 66 69 65 72 20 5d 20 63 73 73 2d 6d 6f 64 69 66 69 65 72 2a 3b 0a 20 20 20 20 20 28 69 66 20 ifier.].css-modifier*;......(if.
3f00 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 74 79 70 type-selector..........(push.typ
3f20 65 2d 73 65 6c 65 63 74 6f 72 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 e-selector.result)........(let.(
3f40 28 6d 6f 64 69 66 69 65 72 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 6d 6f 64 69 (modifier.(esxml--parse-css-modi
3f60 66 69 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 6d 6f 64 69 66 69 65 72 0a 20 20 fier)))..........(if.modifier...
3f80 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6d 6f 64 69 66 69 65 72 20 72 65 73 75 6c 74 ...........(push.modifier.result
3fa0 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 74 68 69 73 20 61 6c 6c 6f 77 )............;;.NOTE:.this.allow
3fc0 73 20 74 68 65 20 74 72 61 69 6c 69 6e 67 20 63 6f 6d 62 69 6e 61 74 6f 72 20 65 72 72 6f 72 20 s.the.trailing.combinator.error.
3fe0 74 6f 20 62 65 20 74 68 72 6f 77 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 64 6f to.be.thrown............(setq.do
4000 6e 65 20 74 29 29 29 29 0a 0a 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 ne.t)))).......(while.(not.done)
4020 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 6f 64 69 66 69 65 72 20 28 65 73 78 6d 6c 2d 2d ........(let.((modifier.(esxml--
4040 70 61 72 73 65 2d 63 73 73 2d 6d 6f 64 69 66 69 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 parse-css-modifier)))..........(
4060 69 66 20 6d 6f 64 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 6d if.modifier..............(push.m
4080 6f 64 69 66 69 65 72 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 odifier.result)............(setq
40a0 20 64 6f 6e 65 20 74 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 63 6c 2d 63 6f .done.t))))......(when.(>.(cl-co
40c0 75 6e 74 20 27 69 64 20 72 65 73 75 6c 74 20 3a 6b 65 79 20 27 63 61 72 29 20 31 29 0a 20 20 20 unt.'id.result.:key.'car).1)....
40e0 20 20 20 20 28 65 72 72 6f 72 20 22 4f 6e 6c 79 20 6f 6e 65 20 69 64 20 73 65 6c 65 63 74 6f 72 ....(error."Only.one.id.selector
4100 20 61 6c 6c 6f 77 65 64 20 70 65 72 20 63 6f 6d 70 6f 75 6e 64 22 29 29 0a 20 20 20 20 20 28 6e .allowed.per.compound"))......(n
4120 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c reverse.result))))..(defun.esxml
4140 2d 2d 70 61 72 73 65 2d 63 73 73 2d 74 79 70 65 2d 73 65 6c 65 63 74 6f 72 20 28 29 0a 20 20 28 --parse-css-type-selector.()...(
4160 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 esxml--with-parse-shorthands....
4180 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 (let.((token.(peek)))......(cond
41a0 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e 74 29 0a .......((eq.(car.token).'ident).
41c0 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 74 61 67 20 .......(next)........(cons.'tag.
41e0 28 69 6e 74 65 72 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 (intern.(esxml--parse-css-identi
4200 66 69 65 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 fier.(cdr.token))))).......((eq.
4220 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 61 73 74 65 72 69 73 6b 29 0a 20 20 20 20 20 20 20 28 6e (car.token).'asterisk)........(n
4240 65 78 74 29 0a 20 20 20 20 20 20 20 27 28 77 69 6c 64 63 61 72 64 29 29 0a 20 20 20 20 20 20 28 ext)........'(wildcard)).......(
4260 74 20 6e 69 6c 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d t.nil)))))..(defun.esxml--parse-
4280 63 73 73 2d 6d 6f 64 69 66 69 65 72 20 28 29 0a 20 20 28 6f 72 20 28 65 73 78 6d 6c 2d 2d 70 61 css-modifier.()...(or.(esxml--pa
42a0 72 73 65 2d 63 73 73 2d 69 64 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d rse-css-id).......(esxml--parse-
42c0 63 73 73 2d 63 6c 61 73 73 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 css-class).......(esxml--parse-c
42e0 73 73 2d 61 74 74 72 69 62 29 0a 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 ss-attrib).......(esxml--parse-c
4300 73 73 2d 70 73 65 75 64 6f 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 ss-pseudo)))..(defun.esxml--pars
4320 65 2d 63 73 73 2d 69 64 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 e-css-id.()...(esxml--with-parse
4340 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 -shorthands....(let.((value.(acc
4360 65 70 74 20 27 68 61 73 68 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 76 61 6c 75 65 0a 20 20 ept.'hash)))......(when.value...
4380 20 20 20 20 20 28 63 6f 6e 73 20 27 69 64 20 28 73 75 62 73 74 72 69 6e 67 20 76 61 6c 75 65 20 .....(cons.'id.(substring.value.
43a0 31 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 1))))))..(defun.esxml--parse-css
43c0 2d 63 6c 61 73 73 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 -class.()...(esxml--with-parse-s
43e0 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 70 65 72 69 horthands....(when.(accept.'peri
4400 6f 64 29 0a 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 70 74 20 27 69 od)......(let.((value.(accept.'i
4420 64 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 dent)))........(if.value........
4440 20 20 20 20 28 63 6f 6e 73 20 27 63 6c 61 73 73 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 ....(cons.'class.value).........
4460 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 61 66 74 .(error."Expected.identifier.aft
4480 65 72 20 70 65 72 69 6f 64 22 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d er.period"))))))..(defun.esxml--
44a0 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 parse-css-attrib.()...(esxml--wi
44c0 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 th-parse-shorthands....(let.(res
44e0 75 6c 74 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 6c 62 72 61 63 6b 65 ult)......(when.(accept.'lbracke
4500 74 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 t)........(eat-whitespace)......
4520 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d ..(let.((name.(esxml--parse-css-
4540 61 74 74 72 69 62 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e attrib-name)))..........(when.(n
4560 6f 74 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 ot.name)............(error."Expe
4580 63 74 65 64 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 cted.attribute.name"))..........
45a0 28 70 75 73 68 20 28 63 6f 6e 73 20 27 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d (push.(cons.'name.(esxml--parse-
45c0 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 css-identifier.name)).result)...
45e0 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 61 63 63 65 70 74 20 27 72 62 72 61 63 .......(when.(not.(accept.'rbrac
4600 6b 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74 63 68 20 28 65 ket))............(let.((match.(e
4620 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 29 29 29 0a sxml--parse-css-attrib-match))).
4640 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 6d 61 74 63 68 29 0a 20 .............(when.(not.match)..
4660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 ..............(error."Expected.a
4680 74 74 72 69 62 75 74 65 20 6d 61 74 63 68 65 72 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ttribute.matcher")).............
46a0 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d .(let.((value.(esxml--parse-css-
46c0 61 74 74 72 69 62 2d 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 attrib-value)))................(
46e0 77 68 65 6e 20 28 6e 6f 74 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 when.(not.value)................
4700 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 74 72 69 62 75 74 65 20 76 61 6c ..(error."Expected.attribute.val
4720 75 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 ue"))................(eat-whites
4740 70 61 63 65 29 0a 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 pace)................(when.(not.
4760 28 61 63 63 65 70 74 20 27 72 62 72 61 63 6b 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (accept.'rbracket)).............
4780 20 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e 74 65 72 6d 69 6e 61 74 65 64 20 61 74 74 72 69 62 .....(error."Unterminated.attrib
47a0 75 74 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e ute"))................(push.(con
47c0 73 20 6d 61 74 63 68 20 76 61 6c 75 65 29 20 72 65 73 75 6c 74 29 29 29 29 29 0a 20 20 20 20 20 s.match.value).result)))))......
47e0 20 20 28 63 6f 6e 73 20 27 61 74 74 72 69 62 75 74 65 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 ..(cons.'attribute.(nreverse.res
4800 75 6c 74 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 ult))))))..(defun.esxml--parse-c
4820 73 73 2d 61 74 74 72 69 62 2d 6e 61 6d 65 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 ss-attrib-name.()...(esxml--with
4840 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 6e 61 6d 65 -parse-shorthands....(let.((name
4860 20 28 61 63 63 65 70 74 20 27 69 64 65 6e 74 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 6e 61 .(accept.'ident)))......(when.na
4880 6d 65 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 me........(eat-whitespace)......
48a0 20 20 6e 61 6d 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d ..name))))..(defun.esxml--parse-
48c0 63 73 73 2d 61 74 74 72 69 62 2d 6d 61 74 63 68 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 css-attrib-match.()...(esxml--wi
48e0 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 th-parse-shorthands....(let.(res
4900 75 6c 74 29 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 ult)......(cond.......((accept.'
4920 65 71 75 61 6c 73 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 65 78 61 equals)........(setq.result.'exa
4940 63 74 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 70 72 65 66 69 ct-match)).......((accept.'prefi
4960 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 70 72 x-match)........(setq.result.'pr
4980 65 66 69 78 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 73 75 66 efix-match)).......((accept.'suf
49a0 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 27 fix-match)........(setq.result.'
49c0 73 75 66 66 69 78 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 73 suffix-match)).......((accept.'s
49e0 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 ubstring-match)........(setq.res
4a00 75 6c 74 20 27 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 28 28 61 ult.'substring-match)).......((a
4a20 63 63 65 70 74 20 27 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 65 ccept.'include-match)........(se
4a40 74 71 20 72 65 73 75 6c 74 20 27 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 tq.result.'include-match))......
4a60 20 28 28 61 63 63 65 70 74 20 27 64 61 73 68 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 28 73 .((accept.'dash-match)........(s
4a80 65 74 71 20 72 65 73 75 6c 74 20 27 64 61 73 68 2d 6d 61 74 63 68 29 29 29 0a 20 20 20 20 20 28 etq.result.'dash-match)))......(
4aa0 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 72 65 73 75 6c 74 29 29 29 0a 0a eat-whitespace)......result)))..
4ac0 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 61 74 74 72 69 62 2d 76 (defun.esxml--parse-css-attrib-v
4ae0 61 6c 75 65 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f alue.()...(esxml--with-parse-sho
4b00 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 rthands....(let.((token.(peek)))
4b20 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 ......(cond.......((eq.(car.toke
4b40 6e 29 20 27 69 64 65 6e 74 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 n).'ident)........(next)........
4b60 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 64 (esxml--parse-css-identifier.(cd
4b80 72 20 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e r.token))).......((eq.(car.token
4ba0 29 20 27 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 ).'string)........(next)........
4bc0 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c (esxml--parse-css-string-literal
4be0 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 29 29 .(cdr.token))).......(t.nil)))))
4c00 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 70 73 65 75 64 6f ..(defun.esxml--parse-css-pseudo
4c20 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 .()...(esxml--with-parse-shortha
4c40 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 20 74 79 70 65 29 0a 20 20 20 20 20 28 nds....(let.(result.type)......(
4c60 77 68 65 6e 20 28 61 63 63 65 70 74 20 27 63 6f 6c 6f 6e 29 0a 20 20 20 20 20 20 20 28 69 66 20 when.(accept.'colon)........(if.
4c80 28 61 63 63 65 70 74 20 27 63 6f 6c 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 (accept.'colon)............(setq
4ca0 20 74 79 70 65 20 27 70 73 65 75 64 6f 2d 65 6c 65 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 .type.'pseudo-element)..........
4cc0 28 73 65 74 71 20 74 79 70 65 20 27 70 73 65 75 64 6f 2d 63 6c 61 73 73 29 29 0a 20 20 20 20 20 (setq.type.'pseudo-class))......
4ce0 20 20 28 6c 65 74 20 28 28 66 75 6e 63 74 69 6f 6e 61 6c 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 ..(let.((functional.(esxml--pars
4d00 65 2d 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 65 75 64 6f 29 29 29 0a 20 20 20 20 20 e-css-functional-pseudo)))......
4d20 20 20 20 20 28 69 66 20 66 75 6e 63 74 69 6f 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(if.functional..............
4d40 28 69 66 20 28 65 71 20 74 79 70 65 20 27 70 73 65 75 64 6f 2d 63 6c 61 73 73 29 0a 20 20 20 20 (if.(eq.type.'pseudo-class).....
4d60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 63 61 72 20 66 .............(let.((value.(car.f
4d80 75 6e 63 74 69 6f 6e 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 unctional)).....................
4da0 20 20 20 28 61 72 67 73 20 28 63 64 72 20 66 75 6e 63 74 69 6f 6e 61 6c 29 29 29 0a 20 20 20 20 ...(args.(cdr.functional))).....
4dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 27 6e 61 6d 65 ...............(push.(cons.'name
4de0 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 76 61 .(esxml--parse-css-identifier.va
4e00 6c 75 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 lue)).result)...................
4e20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 27 61 72 67 73 20 61 72 67 73 29 20 72 65 73 75 6c 74 29 .(push.(cons.'args.args).result)
4e40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 50 73 65 75 64 6f 2d )................(error."Pseudo-
4e60 65 6c 65 6d 65 6e 74 73 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61 72 67 75 6d 65 6e 74 73 22 elements.may.not.have.arguments"
4e80 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 61 63 63 65 ))............(let.((value.(acce
4ea0 70 74 20 27 69 64 65 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 76 61 pt.'ident)))..............(if.va
4ec0 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 lue..................(push.(cons
4ee0 20 27 6e 61 6d 65 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 .'name.(esxml--parse-css-identif
4f00 69 65 72 20 76 61 6c 75 65 29 29 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ier.value)).result).............
4f20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 ...(error."Expected.function.or.
4f40 69 64 65 6e 74 69 66 69 65 72 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 74 79 identifier")))))........(cons.ty
4f60 70 65 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 29 0a 0a 28 64 65 66 75 pe.(nreverse.result))))))..(defu
4f80 6e 20 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 66 75 6e 63 74 69 6f 6e 61 6c 2d 70 73 n.esxml--parse-css-functional-ps
4fa0 65 75 64 6f 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f eudo.()...(esxml--with-parse-sho
4fc0 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 28 66 75 6e 63 74 69 6f 6e 20 28 61 63 63 65 rthands....(let.((function.(acce
4fe0 70 74 20 27 66 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a pt.'function))..........result).
5000 20 20 20 20 20 28 77 68 65 6e 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 28 70 75 73 68 .....(when.function........(push
5020 20 28 73 75 62 73 74 72 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 30 20 2d 31 29 20 72 65 73 75 6c .(substring.function.0.-1).resul
5040 74 29 0a 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 t)........(eat-whitespace)......
5060 20 20 28 6c 65 74 20 28 28 65 78 70 72 65 73 73 69 6f 6e 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 ..(let.((expression.(esxml--pars
5080 65 2d 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 e-css-expression))..............
50a0 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 0a done)..........(eat-whitespace).
50c0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 65 78 70 72 65 73 73 69 6f 6e 29 0a .........(when.(not.expression).
50e0 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 45 78 70 65 63 74 65 64 20 61 74 20 6c ...........(error."Expected.at.l
5100 65 61 73 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e east.one.expression.for.function
5120 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 "))..........(push.expression.re
5140 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 20 64 6f 6e 65 29 sult)..........(while.(not.done)
5160 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 78 70 72 65 73 73 69 6f 6e 20 28 65 73 ............(setq.expression.(es
5180 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 xml--parse-css-expression)).....
51a0 20 20 20 20 20 20 20 28 69 66 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 .......(if.expression...........
51c0 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 20 20 28 70 75 .....(progn..................(pu
51e0 73 68 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 sh.expression.result)...........
5200 20 20 20 20 20 20 20 28 65 61 74 2d 77 68 69 74 65 73 70 61 63 65 29 29 0a 20 20 20 20 20 20 20 .......(eat-whitespace))........
5220 20 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 20 28 77 ......(setq.done.t))))........(w
5240 68 65 6e 20 28 6e 6f 74 20 28 61 63 63 65 70 74 20 27 72 70 61 72 65 6e 29 29 0a 20 20 20 20 20 hen.(not.(accept.'rparen))......
5260 20 20 20 20 28 65 72 72 6f 72 20 22 55 6e 74 65 72 6d 69 6e 61 74 65 64 20 66 75 6e 63 74 69 6f ....(error."Unterminated.functio
5280 6e 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 22 29 29 0a 20 20 20 20 20 20 20 28 6e 72 65 76 65 n.argument.list"))........(nreve
52a0 72 73 65 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 70 rse.result)))))..(defun.esxml--p
52c0 61 72 73 65 2d 63 73 73 2d 65 78 70 72 65 73 73 69 6f 6e 20 28 29 0a 20 20 28 65 73 78 6d 6c 2d arse-css-expression.()...(esxml-
52e0 2d 77 69 74 68 2d 70 61 72 73 65 2d 73 68 6f 72 74 68 61 6e 64 73 0a 20 20 20 28 6c 65 74 20 28 -with-parse-shorthands....(let.(
5300 28 74 6f 6b 65 6e 20 28 70 65 65 6b 29 29 29 0a 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 (token.(peek)))......(cond......
5320 20 28 28 61 63 63 65 70 74 20 27 70 6c 75 73 29 0a 20 20 20 20 20 20 20 27 28 6f 70 65 72 61 74 .((accept.'plus)........'(operat
5340 6f 72 20 2e 20 2b 29 29 0a 20 20 20 20 20 20 28 28 61 63 63 65 70 74 20 27 6d 69 6e 75 73 29 0a or...+)).......((accept.'minus).
5360 20 20 20 20 20 20 20 27 28 6f 70 65 72 61 74 6f 72 20 2e 20 2d 29 29 0a 20 20 20 20 20 20 28 28 .......'(operator...-)).......((
5380 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 64 69 6d 65 6e 73 69 6f 6e 29 0a 20 20 20 20 20 eq.(car.token).'dimension)......
53a0 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 64 69 6d 65 6e 73 69 6f 6e ..(next)........(cons.'dimension
53c0 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 72 20 28 63 .(esxml--parse-css-identifier.(c
53e0 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b dr.token)))).......((eq.(car.tok
5400 65 6e 29 20 27 6e 75 6d 62 65 72 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 en).'number)........(next)......
5420 20 20 28 63 6f 6e 73 20 27 6e 75 6d 62 65 72 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 ..(cons.'number.(string-to-numbe
5440 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 r.(cdr.token)))).......((eq.(car
5460 20 74 6f 6b 65 6e 29 20 27 73 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 .token).'string)........(next)..
5480 20 20 20 20 20 20 28 63 6f 6e 73 20 27 73 74 72 69 6e 67 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 ......(cons.'string.(esxml--pars
54a0 65 2d 63 73 73 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 20 28 63 64 72 20 74 6f 6b 65 6e 29 e-css-string-literal.(cdr.token)
54c0 29 29 29 0a 20 20 20 20 20 20 28 28 65 71 20 28 63 61 72 20 74 6f 6b 65 6e 29 20 27 69 64 65 6e ))).......((eq.(car.token).'iden
54e0 74 29 0a 20 20 20 20 20 20 20 28 6e 65 78 74 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 27 69 t)........(next)........(cons.'i
5500 64 65 6e 74 20 28 65 73 78 6d 6c 2d 2d 70 61 72 73 65 2d 63 73 73 2d 69 64 65 6e 74 69 66 69 65 dent.(esxml--parse-css-identifie
5520 72 20 28 63 64 72 20 74 6f 6b 65 6e 29 29 29 29 0a 20 20 20 20 20 20 28 74 20 6e 69 6c 29 29 29 r.(cdr.token)))).......(t.nil)))
5540 29 29 0a 0a 0c 0a 3b 3b 3b 20 74 72 65 65 20 74 72 61 76 65 72 73 61 6c 0a 0a 3b 3b 20 54 4f 44 ))....;;;.tree.traversal..;;.TOD
5560 4f 3a 20 74 68 65 73 65 20 68 65 6c 70 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 70 61 72 74 20 O:.these.helpers.should.be.part.
5580 6f 66 20 65 73 78 6d 6c 2e 65 6c 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d of.esxml.el.(defun.esxml-branch-
55a0 70 20 28 6e 6f 64 65 29 0a 20 20 22 4e 6f 6e 2d 6e 69 6c 20 69 66 20 4e 4f 44 45 20 72 65 66 65 p.(node)..."Non-nil.if.NODE.refe
55c0 72 73 20 74 6f 20 61 6e 20 65 73 78 6d 6c 20 62 72 61 6e 63 68 2e 22 0a 20 20 28 61 6e 64 20 28 rs.to.an.esxml.branch."...(and.(
55e0 6c 69 73 74 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 3e 3d 20 28 6c 65 6e 67 74 68 20 6e listp.node)........(>=.(length.n
5600 6f 64 65 29 20 32 29 0a 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 72 20 6e 6f 64 ode).2)........(symbolp.(car.nod
5620 65 29 29 0a 20 20 20 20 20 20 20 28 6c 69 73 74 70 20 28 63 61 64 72 20 6e 6f 64 65 29 29 29 29 e))........(listp.(cadr.node))))
5640 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 28 6e 6f 64 65 29 0a 20 ..(defun.esxml-node-tag.(node)..
5660 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 74 61 67 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 ."Returns.the.tag.of.NODE.if.ava
5680 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 ilable."...(and.(esxml-branch-p.
56a0 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 63 61 72 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 75 node)........(car.node)))..(defu
56c0 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 28 6e 6f 64 65 29 0a 20 n.esxml-node-attributes.(node)..
56e0 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 61 74 74 72 69 62 75 74 65 73 20 6f 66 20 4e 4f 44 45 ."Returns.the.attributes.of.NODE
5700 20 69 66 20 61 76 61 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 .if.available."...(and.(esxml-br
5720 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 63 61 64 72 20 6e 6f 64 65 29 29 anch-p.node)........(cadr.node))
5740 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 28 )..(defun.esxml-node-attribute.(
5760 61 74 74 72 69 62 75 74 65 20 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 61 attribute.node)..."Returns.the.a
5780 74 74 72 69 62 75 74 65 20 41 54 54 52 49 42 55 54 45 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 ttribute.ATTRIBUTE.of.NODE.if.av
57a0 61 69 6c 61 62 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 ailable."...(and.(esxml-branch-p
57c0 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 71 20 61 74 74 72 69 62 75 .node)........(cdr.(assq.attribu
57e0 74 65 20 28 63 61 64 72 20 6e 6f 64 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c te.(cadr.node)))))..(defun.esxml
5800 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 28 6e 6f 64 65 29 0a 20 20 22 52 65 74 75 72 6e 73 -node-children.(node)..."Returns
5820 20 74 68 65 20 63 68 69 6c 64 72 65 6e 20 6f 66 20 4e 4f 44 45 20 69 66 20 61 76 61 69 6c 61 62 .the.children.of.NODE.if.availab
5840 6c 65 2e 22 0a 20 20 28 61 6e 64 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 le."...(and.(esxml-branch-p.node
5860 29 0a 20 20 20 20 20 20 20 28 6e 74 68 63 64 72 20 32 20 6e 6f 64 65 29 29 29 0a 0a 28 64 65 66 )........(nthcdr.2.node)))..(def
5880 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 un.esxml-find-node.(pred.root)..
58a0 20 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 ."Locates.a.node.satisfying.PRED
58c0 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 52 65 74 75 72 6e 73 20 74 68 65 .starting.from.ROOT..Returns.the
58e0 20 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 .node.or.nil.if.none.found."...(
5900 69 66 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 20 20 20 20 72 6f 6f if.(funcall.pred.root).......roo
5920 74 0a 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 t.....(cl-some.(lambda.(node).(e
5940 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 sxml-find-node.pred.node))......
5960 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f ........(esxml-node-children.roo
5980 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f 64 65 73 20 t))))..(defun.esxml-visit-nodes.
59a0 28 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 22 56 69 73 69 74 20 6e 6f 64 65 73 20 62 (function.root)..."Visit.nodes.b
59c0 79 20 63 61 6c 6c 69 6e 67 20 46 55 4e 43 54 49 4f 4e 20 6f 6e 20 65 61 63 68 20 73 74 61 72 74 y.calling.FUNCTION.on.each.start
59e0 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e 22 0a 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 ing.from.ROOT."...(funcall.funct
5a00 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 28 6d 61 70 63 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 ion.root)...(mapc.(lambda.(node)
5a20 20 28 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f 64 65 73 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 .(esxml-visit-nodes.function.nod
5a40 65 29 29 0a 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e e)).........(esxml-node-children
5a60 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 .root)))..(defun.esxml-find-node
5a80 73 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 s.(pred.root)..."Locates.all.nod
5aa0 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d es.satisfying.PRED.starting.from
5ac0 20 52 4f 4f 54 2e 0a 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 .ROOT..Returns.a.list.of.the.nod
5ae0 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 6c 65 74 es.or.nil.if.none.found."...(let
5b00 20 28 28 61 63 63 20 27 28 29 29 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 76 69 73 69 74 2d 6e 6f .((acc.'())).....(esxml-visit-no
5b20 64 65 73 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 28 des......(lambda.(node)........(
5b40 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 when.(funcall.pred.node)........
5b60 20 20 28 70 75 73 68 20 6e 6f 64 65 20 61 63 63 29 29 29 0a 20 20 20 20 20 72 6f 6f 74 29 0a 20 ..(push.node.acc)))......root)..
5b80 20 20 20 28 6e 72 65 76 65 72 73 65 20 61 63 63 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d ...(nreverse.acc)))..(defun.esxm
5ba0 6c 2d 66 69 6e 64 2d 64 65 73 63 65 6e 64 61 6e 74 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 l-find-descendant.(pred.root)...
5bc0 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 "Locates.a.node.satisfying.PRED.
5be0 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 starting.from.ROOT's.children..R
5c00 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 66 eturns.the.node.or.nil.if.none.f
5c20 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 ound."...(cl-some.(lambda.(node)
5c40 20 28 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 20 70 72 65 64 20 6e 6f 64 65 29 29 0a 20 20 .(esxml-find-node.pred.node))...
5c60 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f .........(esxml-node-children.ro
5c80 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 64 65 73 63 65 6e 64 ot)))..(defun.esxml-find-descend
5ca0 61 6e 74 73 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 ants.(pred.root)..."Locates.all.
5cc0 6e 6f 64 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 73 74 61 72 74 69 6e 67 20 66 nodes.satisfying.PRED.starting.f
5ce0 72 6f 6d 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 61 20 6c rom.ROOT's.children..Returns.a.l
5d00 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e 65 20 ist.of.the.nodes.or.nil.if.none.
5d20 66 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 6d 61 70 63 61 6e 20 28 6c 61 6d 62 64 61 20 28 6e 6f found."...(cl-mapcan.(lambda.(no
5d40 64 65 29 20 28 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 70 72 65 64 20 6e 6f 64 65 29 de).(esxml-find-nodes.pred.node)
5d60 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 )..............(esxml-node-child
5d80 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 66 69 6e 64 2d 63 ren.root)))..(defun.esxml-find-c
5da0 68 69 6c 64 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 20 6e 6f hild.(pred.root)..."Locates.a.no
5dc0 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 44 20 61 6d 6f 6e 67 20 52 4f 4f 54 27 73 20 de.satisfying.PRED.among.ROOT's.
5de0 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 6f 72 20 6e 69 children..Returns.the.node.or.ni
5e00 6c 20 69 66 20 6e 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 l.if.none.found."...(cl-some.(la
5e20 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 mbda.(node).(when.(funcall.pred.
5e40 6e 6f 64 65 29 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e node).node))............(esxml-n
5e60 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 ode-children.root)))..(defun.esx
5e80 6d 6c 2d 66 69 6e 64 2d 63 68 69 6c 64 72 65 6e 20 28 70 72 65 64 20 72 6f 6f 74 29 0a 20 20 22 ml-find-children.(pred.root)..."
5ea0 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 79 69 6e 67 20 50 52 45 Locates.all.nodes.satisfying.PRE
5ec0 44 20 61 6d 6f 6e 67 20 52 4f 4f 54 27 73 20 63 68 69 6c 64 72 65 6e 2e 0a 52 65 74 75 72 6e 73 D.among.ROOT's.children..Returns
5ee0 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e .a.list.of.the.nodes.or.nil.if.n
5f00 6f 6e 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e one.found."...(mapcar.(lambda.(n
5f20 6f 64 65 29 20 28 77 68 65 6e 20 28 66 75 6e 63 61 6c 6c 20 70 72 65 64 20 6e 6f 64 65 29 20 6e ode).(when.(funcall.pred.node).n
5f40 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c ode))...........(esxml-node-chil
5f60 64 72 65 6e 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 dren.root)))..(defun.esxml--node
5f80 2d 77 69 74 68 2d 63 68 69 6c 64 72 65 6e 20 28 6e 6f 64 65 20 63 68 69 6c 64 72 65 6e 29 0a 20 -with-children.(node.children)..
5fa0 20 28 6c 65 74 20 28 28 74 61 67 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 .(let.((tag.(esxml-node-tag.node
5fc0 29 29 0a 20 20 20 20 20 20 20 20 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f )).........(attributes.(esxml-no
5fe0 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 28 61 70 70 65 6e de-attributes.node))).....(appen
6000 64 20 28 6c 69 73 74 20 74 61 67 20 61 74 74 72 69 62 75 74 65 73 29 20 63 68 69 6c 64 72 65 6e d.(list.tag.attributes).children
6020 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 )))..(defun.esxml--node-with-att
6040 72 69 62 75 74 65 73 20 28 6e 6f 64 65 20 61 74 74 72 69 62 75 74 65 73 29 0a 20 20 28 6c 65 74 ributes.(node.attributes)...(let
6060 20 28 28 74 61 67 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 29 0a 20 20 .((tag.(esxml-node-tag.node))...
6080 20 20 20 20 20 20 28 63 68 69 6c 64 72 65 6e 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c ......(children.(esxml-node-chil
60a0 64 72 65 6e 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 74 dren.node))).....(append.(list.t
60c0 61 67 20 61 74 74 72 69 62 75 74 65 73 29 20 63 68 69 6c 64 72 65 6e 29 29 29 0a 0a 28 64 65 66 ag.attributes).children)))..(def
60e0 75 6e 20 65 73 78 6d 6c 2d 74 72 65 65 2d 6d 61 70 20 28 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 un.esxml-tree-map.(function.root
6100 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 52 4f 4f 54 20 77 69 74 68 )..."Returns.a.copy.of.ROOT.with
6120 20 46 55 4e 43 54 49 4f 4e 20 61 70 70 6c 69 65 64 20 74 6f 20 65 61 63 68 20 6e 6f 64 65 2e 22 .FUNCTION.applied.to.each.node."
6140 0a 20 20 28 69 66 20 28 65 73 78 6d 6c 2d 62 72 61 6e 63 68 2d 70 20 72 6f 6f 74 29 0a 20 20 20 ...(if.(esxml-branch-p.root)....
6160 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 63 68 69 6c 64 72 65 6e 0a 20 20 ...(esxml--node-with-children...
6180 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f 74 29 0a 20 20 20 .....(funcall.function.root)....
61a0 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 20 28 65 73 78 6d ....(mapcar.(lambda.(node).(esxm
61c0 6c 2d 74 72 65 65 2d 6d 61 70 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 l-tree-map.function.node))......
61e0 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 63 68 69 6c 64 72 65 6e 20 72 ..........(esxml-node-children.r
6200 6f 6f 74 29 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 72 6f 6f oot))).....(funcall.function.roo
6220 74 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 28 6d 61 6b t)))..(defvar.esxml--symbol.(mak
6240 65 2d 73 79 6d 62 6f 6c 20 22 69 64 22 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 64 e-symbol."id"))..(defun.esxml--d
6260 65 63 6f 72 61 74 65 2d 74 72 65 65 20 28 72 6f 6f 74 29 0a 20 20 28 6c 65 74 20 28 28 69 20 30 ecorate-tree.(root)...(let.((i.0
6280 29 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 74 72 65 65 2d 6d 61 70 0a 20 20 20 20 20 28 6c 61 6d )).....(esxml-tree-map......(lam
62a0 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 61 74 74 72 69 62 75 bda.(node)........(let.((attribu
62c0 74 65 20 28 63 6f 6e 73 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 69 29 29 0a 20 20 20 20 20 te.(cons.esxml--symbol.i))......
62e0 20 20 20 20 20 20 20 20 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d ........(attributes.(esxml-node-
6300 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 attributes.node)))..........(set
6320 71 20 61 74 74 72 69 62 75 74 65 73 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 61 74 74 72 69 q.attributes.(append.(list.attri
6340 62 75 74 65 29 20 61 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 65 74 bute).attributes))..........(set
6360 71 20 69 20 28 31 2b 20 69 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 73 78 6d 6c 2d q.i.(1+.i))..........(if.(esxml-
6380 62 72 61 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 branch-p.node)..............(esx
63a0 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 20 61 74 ml--node-with-attributes.node.at
63c0 74 72 69 62 75 74 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 29 29 29 0a 20 20 20 tributes)............node)))....
63e0 20 20 72 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 75 6e 64 65 63 6f 72 ..root)))..(defun.esxml--undecor
6400 61 74 65 2d 6e 6f 64 65 20 28 6e 6f 64 65 29 0a 20 20 28 69 66 20 28 65 73 78 6d 6c 2d 62 72 61 ate-node.(node)...(if.(esxml-bra
6420 6e 63 68 2d 70 20 6e 6f 64 65 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 nch-p.node).......(let.((attribu
6440 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 tes.(esxml-node-attributes.node)
6460 29 29 0a 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 77 69 74 68 2d 61 74 74 )).........(esxml--node-with-att
6480 72 69 62 75 74 65 73 20 6e 6f 64 65 20 28 61 73 73 71 2d 64 65 6c 65 74 65 2d 61 6c 6c 20 65 73 ributes.node.(assq-delete-all.es
64a0 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 xml--symbol.....................
64c0 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 ................................
64e0 20 20 20 20 20 20 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 20 20 20 20 6e 6f 64 65 29 29 0a .......attributes))).....node)).
6500 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 .(defun.esxml--retrieve-decorati
6520 6f 6e 20 28 6e 6f 64 65 29 0a 20 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 on.(node)...(esxml-node-attribut
6540 65 20 65 73 78 6d 6c 2d 2d 73 79 6d 62 6f 6c 20 6e 6f 64 65 29 29 0a 0a 0c 0a 3b 3b 3b 20 71 75 e.esxml--symbol.node))....;;;.qu
6560 65 72 79 69 6e 67 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 73 75 70 70 6f 72 74 69 6e 67 20 73 74 72 75 erying..;;.NOTE:.supporting.stru
6580 63 74 75 72 61 6c 20 70 73 65 75 64 6f 20 66 75 6e 63 74 69 6f 6e 73 2c 20 64 69 72 65 63 74 20 ctural.pseudo.functions,.direct.
65a0 73 69 62 6c 69 6e 67 73 20 61 6e 64 0a 3b 3b 20 69 6e 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 siblings.and.;;.indirect.sibling
65c0 73 20 72 65 71 75 69 72 65 73 20 62 72 65 61 64 74 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65 s.requires.breadth.instead.of.de
65e0 70 74 68 20 74 72 61 76 65 72 73 61 6c 2c 0a 3b 3b 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 pth.traversal,.;;.something.that
6600 20 63 6f 75 6c 64 20 62 65 20 65 6d 75 6c 61 74 65 64 20 77 69 74 68 6f 75 74 20 7a 69 70 70 65 .could.be.emulated.without.zippe
6620 72 73 20 69 66 20 79 6f 75 20 68 61 64 20 74 68 65 0a 3b 3b 20 70 61 72 65 6e 74 20 6f 66 20 74 rs.if.you.had.the.;;.parent.of.t
6640 68 65 20 6e 6f 64 65 20 28 61 6e 64 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 he.node.(and.the.position.of.the
6660 20 63 68 69 6c 64 29 2e 2e 2e 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d .child).....(defun.esxml--node-m
6680 61 74 63 68 65 73 2d 61 74 74 72 69 62 75 74 65 2d 70 20 28 6e 6f 64 65 20 6d 6f 64 69 66 69 65 atches-attribute-p.(node.modifie
66a0 72 29 0a 20 20 28 6c 65 74 20 28 28 61 74 74 72 69 62 75 74 65 73 20 28 65 73 78 6d 6c 2d 6e 6f r)...(let.((attributes.(esxml-no
66c0 64 65 2d 61 74 74 72 69 62 75 74 65 73 20 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 68 61 79 de-attributes.node)).........hay
66e0 73 74 61 63 6b 29 0a 20 20 20 20 28 63 6c 2d 65 76 65 72 79 0a 20 20 20 20 20 28 6c 61 6d 62 64 stack).....(cl-every......(lambd
6700 61 20 28 69 74 65 6d 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 a.(item)........(let.((type.(car
6720 20 69 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 63 64 72 .item))..............(value.(cdr
6740 20 69 74 65 6d 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 .item)))..........(cond.........
6760 20 20 28 28 65 71 20 74 79 70 65 20 27 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c ..((eq.type.'name)............(l
6780 65 74 20 28 28 6d 61 74 63 68 20 28 61 73 73 71 20 28 69 6e 74 65 72 6e 20 76 61 6c 75 65 29 20 et.((match.(assq.(intern.value).
67a0 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 attributes)))..............(setq
67c0 20 68 61 79 73 74 61 63 6b 20 28 63 64 72 20 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 20 20 20 .haystack.(cdr.match))..........
67e0 20 20 20 20 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 ....match))...........((eq.type.
6800 27 65 78 61 63 74 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 'exact-match)............(equal.
6820 68 61 79 73 74 61 63 6b 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 haystack.value))...........((eq.
6840 74 79 70 65 20 27 70 72 65 66 69 78 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 type.'prefix-match)............(
6860 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 29 string-prefix-p.value.haystack))
6880 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 73 75 66 66 69 78 2d 6d 61 74 ...........((eq.type.'suffix-mat
68a0 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 73 75 66 66 69 78 2d 70 20 ch)............(string-suffix-p.
68c0 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 value.haystack))...........((eq.
68e0 74 79 70 65 20 27 73 75 62 73 74 72 69 6e 67 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 type.'substring-match)..........
6900 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 ..(string-match-p.(regexp-quote.
6920 76 61 6c 75 65 29 20 68 61 79 73 74 61 63 6b 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 value).haystack))...........((eq
6940 20 74 79 70 65 20 27 69 6e 63 6c 75 64 65 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 .type.'include-match)...........
6960 20 28 6d 65 6d 62 65 72 20 76 61 6c 75 65 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 68 61 79 .(member.value.(split-string.hay
6980 73 74 61 63 6b 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 stack.".")))...........((eq.type
69a0 20 27 64 61 73 68 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 65 71 .'dash-match)............(or.(eq
69c0 75 61 6c 20 76 61 6c 75 65 20 68 61 79 73 74 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ual.value.haystack).............
69e0 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 28 66 6f 72 6d 61 74 20 22 5e 25 73 2d ...(string-match-p.(format."^%s-
6a00 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 76 61 6c 75 65 29 29 20 68 61 79 73 74 61 63 6b ".(regexp-quote.value)).haystack
6a20 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 6b 6e 6f 77 6e )))...........(t.(error."Unknown
6a40 20 61 74 74 72 69 62 75 74 65 20 6d 6f 64 69 66 69 65 72 22 29 29 29 29 29 0a 20 20 20 20 20 6d .attribute.modifier")))))......m
6a60 6f 64 69 66 69 65 72 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d odifier)))..(defun.esxml--node-m
6a80 61 74 63 68 65 73 2d 6d 6f 64 69 66 69 65 72 2d 70 20 28 6e 6f 64 65 20 74 79 70 65 20 76 61 6c atches-modifier-p.(node.type.val
6aa0 75 65 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 77 69 6c 64 63 61 ue)...(cond....((eq.type.'wildca
6ac0 72 64 29 0a 20 20 20 20 74 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 74 61 67 29 0a 20 20 rd).....t)....((eq.type.'tag)...
6ae0 20 20 28 65 71 75 61 6c 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 74 61 67 20 6e 6f 64 65 29 20 76 ..(equal.(esxml-node-tag.node).v
6b00 61 6c 75 65 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 69 64 29 0a 20 20 20 20 28 65 71 alue))....((eq.type.'id).....(eq
6b20 75 61 6c 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 74 72 69 62 75 74 65 20 27 69 64 20 6e 6f ual.(esxml-node-attribute.'id.no
6b40 64 65 29 20 76 61 6c 75 65 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 27 63 6c 61 73 73 29 de).value))....((eq.type.'class)
6b60 0a 20 20 20 20 28 6c 65 74 20 28 28 63 6c 61 73 73 20 28 65 73 78 6d 6c 2d 6e 6f 64 65 2d 61 74 .....(let.((class.(esxml-node-at
6b80 74 72 69 62 75 74 65 20 27 63 6c 61 73 73 20 6e 6f 64 65 29 29 29 0a 20 20 20 20 20 20 28 61 6e tribute.'class.node))).......(an
6ba0 64 20 63 6c 61 73 73 20 28 6d 65 6d 62 65 72 20 76 61 6c 75 65 20 28 73 70 6c 69 74 2d 73 74 72 d.class.(member.value.(split-str
6bc0 69 6e 67 20 63 6c 61 73 73 20 22 20 22 29 29 29 29 29 0a 20 20 20 28 28 65 71 20 74 79 70 65 20 ing.class.".")))))....((eq.type.
6be0 27 61 74 74 72 69 62 75 74 65 29 0a 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 2d 6d 61 74 'attribute).....(esxml--node-mat
6c00 63 68 65 73 2d 61 74 74 72 69 62 75 74 65 2d 70 20 6e 6f 64 65 20 76 61 6c 75 65 29 29 0a 20 20 ches-attribute-p.node.value))...
6c20 20 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 73 74 72 75 63 74 75 72 61 6c 20 70 73 65 .;;.TODO:.support.structural.pse
6c40 75 64 6f 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 65 72 72 6f 72 20 udo.functions....;;.TODO:.error.
6c60 6f 75 74 20 6f 6e 20 69 6e 76 61 6c 69 64 20 70 73 65 75 64 6f 2d 63 6c 61 73 73 20 61 72 67 75 out.on.invalid.pseudo-class.argu
6c80 6d 65 6e 74 73 0a 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 69 6d 70 6c 65 6d 65 6e 74 65 ments....(t.(error."Unimplemente
6ca0 64 20 61 74 74 72 69 62 75 74 65 20 74 79 70 65 3a 20 25 73 22 20 74 79 70 65 29 29 29 29 0a 0a d.attribute.type:.%s".type))))..
6cc0 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 2d 66 6f 72 20 28 61 74 74 (defun.esxml--find-node-for.(att
6ce0 72 69 62 75 74 65 73 29 0a 20 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 28 63 ributes)...(lambda.(node).....(c
6d00 6c 2d 65 76 65 72 79 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 74 74 72 69 62 75 74 65 29 l-every......(lambda.(attribute)
6d20 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 79 70 65 20 28 63 61 72 20 61 74 74 72 69 62 75 ........(let.((type.(car.attribu
6d40 74 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 20 28 63 64 72 20 61 74 te))..............(value.(cdr.at
6d60 74 72 69 62 75 74 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 6e 6f 64 65 tribute)))..........(esxml--node
6d80 2d 6d 61 74 63 68 65 73 2d 6d 6f 64 69 66 69 65 72 2d 70 20 6e 6f 64 65 20 74 79 70 65 20 76 61 -matches-modifier-p.node.type.va
6da0 6c 75 65 29 29 29 0a 20 20 20 20 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a 0a 28 64 65 66 75 lue)))......attributes)))..(defu
6dc0 6e 20 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 28 72 6f 6f 74 20 63 6f 6d 62 69 6e n.esxml--find-nodes.(root.combin
6de0 61 74 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 0a 20 20 28 6c 65 74 2a 20 28 28 74 79 70 65 20 ator.attributes)...(let*.((type.
6e00 28 63 64 72 20 28 61 73 73 71 20 27 63 6f 6d 62 69 6e 61 74 6f 72 20 63 6f 6d 62 69 6e 61 74 6f (cdr.(assq.'combinator.combinato
6e20 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 77 61 6c 6b 65 72 20 28 63 6f 6e 64 0a 20 20 20 20 r)))..........(walker.(cond.....
6e40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 74 79 70 65 29 0a 20 20 20 20 20 20 20 .............((not.type)........
6e60 20 20 20 20 20 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 69 6e 64 2d 6e 6f 64 65 73 29 0a 20 20 ...........'esxml-find-nodes)...
6e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 74 79 70 65 20 27 64 65 73 63 65 6e ...............((eq.type.'descen
6ea0 64 61 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 dant)...................'esxml-f
6ec0 69 6e 64 2d 64 65 73 63 65 6e 64 61 6e 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ind-descendants)................
6ee0 20 20 28 28 65 71 20 74 79 70 65 20 27 63 68 69 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..((eq.type.'child).............
6f00 20 20 20 20 20 20 27 65 73 78 6d 6c 2d 66 69 6e 64 2d 63 68 69 6c 64 72 65 6e 29 0a 20 20 20 20 ......'esxml-find-children).....
6f20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 64 69 .............;;.TODO:.support.di
6f40 72 65 63 74 20 73 69 62 6c 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b rect.sibling..................;;
6f60 20 54 4f 44 4f 3a 20 73 75 70 70 6f 72 74 20 69 6e 64 69 72 65 63 74 20 73 69 62 6c 69 6e 67 0a .TODO:.support.indirect.sibling.
6f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 55 6e 69 6d .................(t.(error."Unim
6fa0 70 6c 65 6d 65 6e 74 65 64 20 63 6f 6d 62 69 6e 61 74 6f 72 20 25 73 22 20 63 6f 6d 62 69 6e 61 plemented.combinator.%s".combina
6fc0 74 6f 72 29 29 29 29 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 77 61 6c 6b 65 72 20 28 65 73 tor))))).....(funcall.walker.(es
6fe0 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 2d 66 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 20 72 xml--find-node-for.attributes).r
7000 6f 6f 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 71 75 65 72 79 20 28 73 65 6c oot)))..(defun.esxml--query.(sel
7020 65 63 74 6f 72 20 72 6f 6f 74 29 0a 20 20 28 6c 65 74 2a 20 28 28 61 74 74 72 69 62 75 74 65 73 ector.root)...(let*.((attributes
7040 20 28 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 63 6f 6d 62 69 6e .(pop.selector))..........combin
7060 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 28 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 66 69 ator..........(result.(esxml--fi
7080 6e 64 2d 6e 6f 64 65 73 20 72 6f 6f 74 20 6e 69 6c 20 61 74 74 72 69 62 75 74 65 73 29 29 29 0a nd-nodes.root.nil.attributes))).
70a0 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 72 65 73 75 6c 74 20 73 65 6c 65 63 74 6f 72 29 ....(while.(and.result.selector)
70c0 0a 20 20 20 20 20 20 28 73 65 74 71 20 63 6f 6d 62 69 6e 61 74 6f 72 20 28 70 6f 70 20 73 65 6c .......(setq.combinator.(pop.sel
70e0 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 61 74 74 72 69 62 75 74 65 73 20 28 ector)).......(setq.attributes.(
7100 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c pop.selector)).......(setq.resul
7120 74 20 28 63 6c 2d 6d 61 70 63 61 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.(cl-mapcan....................
7140 20 28 6c 61 6d 62 64 61 20 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(lambda.(node).................
7160 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 2d 66 69 6e 64 2d 6e 6f 64 65 73 20 6e 6f 64 65 20 63 6f ......(esxml--find-nodes.node.co
7180 6d 62 69 6e 61 74 6f 72 20 61 74 74 72 69 62 75 74 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 mbinator.attributes))...........
71a0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 ..........result)).......(setq.r
71c0 65 73 75 6c 74 20 28 64 65 6c 71 20 6e 69 6c 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 72 65 esult.(delq.nil.result))).....re
71e0 73 75 6c 74 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 64 65 6c 65 74 65 2d 64 75 70 sult))..(defun.esxml--delete-dup
7200 73 20 28 69 74 65 6d 73 20 74 65 73 74 29 0a 20 20 28 6c 65 74 20 28 28 73 65 65 6e 20 28 6d 61 s.(items.test)...(let.((seen.(ma
7220 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 74 65 73 74 29 29 0a 20 20 20 20 20 ke-hash-table.:test.test))......
7240 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 28 77 68 69 6c 65 20 69 74 65 6d 73 0a 20 20 20 20 ...result).....(while.items.....
7260 20 20 28 6c 65 74 20 28 28 69 74 65 6d 20 28 70 6f 70 20 69 74 65 6d 73 29 29 29 0a 20 20 20 20 ..(let.((item.(pop.items))).....
7280 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 67 65 74 68 61 73 68 20 69 74 65 6d 20 73 65 65 ....(when.(not.(gethash.item.see
72a0 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 69 74 65 6d 20 72 65 73 75 6c 74 29 n))...........(push.item.result)
72c0 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 74 68 61 73 68 20 69 74 65 6d 20 74 20 73 65 65 6e 29 ...........(puthash.item.t.seen)
72e0 29 29 29 0a 20 20 20 20 28 6e 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 0a 0a 28 64 65 ))).....(nreverse.result)))..(de
7300 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 28 73 65 6c 65 63 74 6f 72 20 72 6f fun.esxml-query-all.(selector.ro
7320 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 6c 6c 20 6e 6f 64 65 73 20 73 61 74 69 73 66 79 ot)..."Locates.all.nodes.satisfy
7340 69 6e 67 20 53 45 4c 45 43 54 4f 52 20 73 74 61 72 74 69 6e 67 20 66 72 6f 6d 20 52 4f 4f 54 2e ing.SELECTOR.starting.from.ROOT.
7360 0a 53 45 4c 45 43 54 4f 52 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 .SELECTOR.must.be.a.string.conta
7380 69 6e 69 6e 67 20 61 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 6f 72 20 61 20 70 61 72 73 65 64 ining.a.CSS.selector.or.a.parsed
73a0 0a 43 53 53 20 73 65 6c 65 63 74 6f 72 20 72 65 74 75 72 6e 65 64 20 62 79 20 60 65 73 78 6d 6c .CSS.selector.returned.by.`esxml
73c0 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 27 2e 20 20 52 65 74 75 72 6e 73 20 61 -parse-css-selector'...Returns.a
73e0 0a 6c 69 73 74 20 6f 66 20 74 68 65 20 6e 6f 64 65 73 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e .list.of.the.nodes.or.nil.if.non
7400 65 20 66 6f 75 6e 64 2e 22 0a 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 73 65 6c 65 63 e.found."...(when.(stringp.selec
7420 74 6f 72 29 0a 20 20 20 20 28 73 65 74 71 20 73 65 6c 65 63 74 6f 72 20 28 65 73 78 6d 6c 2d 70 tor).....(setq.selector.(esxml-p
7440 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 20 73 65 6c 65 63 74 6f 72 29 29 29 0a 20 20 arse-css-selector.selector)))...
7460 28 69 66 20 28 3d 20 28 6c 65 6e 67 74 68 20 73 65 6c 65 63 74 6f 72 29 20 31 29 0a 20 20 20 20 (if.(=.(length.selector).1).....
7480 20 20 3b 3b 20 6e 6f 20 63 6f 6d 6d 61 73 2c 20 77 65 20 63 61 6e 20 6f 6e 6c 79 20 67 65 74 20 ..;;.no.commas,.we.can.only.get.
74a0 74 68 65 20 73 61 6d 65 20 6e 6f 64 65 73 20 72 65 70 65 61 74 65 64 6c 79 0a 20 20 20 20 20 20 the.same.nodes.repeatedly.......
74c0 28 65 73 78 6d 6c 2d 2d 64 65 6c 65 74 65 2d 64 75 70 73 20 28 65 73 78 6d 6c 2d 2d 71 75 65 72 (esxml--delete-dups.(esxml--quer
74e0 79 20 28 63 61 72 20 73 65 6c 65 63 74 6f 72 29 20 72 6f 6f 74 29 20 27 65 71 29 0a 20 20 20 20 y.(car.selector).root).'eq).....
7500 3b 3b 20 63 6f 6d 6d 61 73 2c 20 6e 6f 64 65 73 20 6d 69 67 68 74 20 62 65 20 74 68 65 20 73 61 ;;.commas,.nodes.might.be.the.sa
7520 6d 65 20 2a 61 6e 64 2a 20 69 6e 20 74 68 65 20 77 72 6f 6e 67 20 6f 72 64 65 72 0a 20 20 20 20 me.*and*.in.the.wrong.order.....
7540 28 73 65 74 71 20 72 6f 6f 74 20 28 65 73 78 6d 6c 2d 2d 64 65 63 6f 72 61 74 65 2d 74 72 65 65 (setq.root.(esxml--decorate-tree
7560 20 72 6f 6f 74 29 29 0a 20 20 20 20 28 6c 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 .root)).....(let.(result).......
7580 28 77 68 69 6c 65 20 73 65 6c 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 (while.selector.........(setq.re
75a0 73 75 6c 74 20 28 6e 63 6f 6e 63 20 72 65 73 75 6c 74 20 28 65 73 78 6d 6c 2d 2d 71 75 65 72 79 sult.(nconc.result.(esxml--query
75c0 20 28 70 6f 70 20 73 65 6c 65 63 74 6f 72 29 20 72 6f 6f 74 29 29 29 29 0a 20 20 20 20 20 20 28 .(pop.selector).root)))).......(
75e0 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6c 2d 73 6f 72 74 20 72 65 73 75 6c 74 20 27 3c 20 3a setq.result.(cl-sort.result.'<.:
7600 6b 65 79 20 27 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 74 69 6f 6e 29 key.'esxml--retrieve-decoration)
7620 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6c 2d 64 65 6c 65 74 65 2d ).......(setq.result.(cl-delete-
7640 64 75 70 6c 69 63 61 74 65 73 20 72 65 73 75 6c 74 20 3a 74 65 73 74 20 27 3d 0a 20 20 20 20 20 duplicates.result.:test.'=......
7660 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 ................................
7680 20 20 20 20 3a 6b 65 79 20 27 65 73 78 6d 6c 2d 2d 72 65 74 72 69 65 76 65 2d 64 65 63 6f 72 61 ....:key.'esxml--retrieve-decora
76a0 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 6e 6f tion)).......(mapcar.(lambda.(no
76c0 64 65 29 20 28 65 73 78 6d 6c 2d 2d 75 6e 64 65 63 6f 72 61 74 65 2d 6e 6f 64 65 20 6e 6f 64 65 de).(esxml--undecorate-node.node
76e0 29 29 20 72 65 73 75 6c 74 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 71 75 65 72 )).result))))..(defun.esxml-quer
7700 79 20 28 73 65 6c 65 63 74 6f 72 20 72 6f 6f 74 29 0a 20 20 22 4c 6f 63 61 74 65 73 20 61 20 6e y.(selector.root)..."Locates.a.n
7720 6f 64 65 20 73 61 74 69 73 66 79 69 6e 67 20 53 45 4c 45 43 54 4f 52 20 73 74 61 72 74 69 6e 67 ode.satisfying.SELECTOR.starting
7740 20 66 72 6f 6d 20 52 4f 4f 54 2e 0a 53 45 4c 45 43 54 4f 52 20 6d 75 73 74 20 62 65 20 61 20 73 .from.ROOT..SELECTOR.must.be.a.s
7760 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 43 53 53 20 73 65 6c 65 63 74 6f 72 20 tring.containing.a.CSS.selector.
7780 6f 72 20 61 20 70 61 72 73 65 64 0a 43 53 53 20 73 65 6c 65 63 74 6f 72 20 72 65 74 75 72 6e 65 or.a.parsed.CSS.selector.returne
77a0 64 20 62 79 20 60 65 73 78 6d 6c 2d 70 61 72 73 65 2d 63 73 73 2d 73 65 6c 65 63 74 6f 72 27 2e d.by.`esxml-parse-css-selector'.
77c0 20 20 52 65 74 75 72 6e 73 20 74 68 65 0a 6e 6f 64 65 20 6f 72 20 6e 69 6c 20 69 66 20 6e 6f 6e ..Returns.the.node.or.nil.if.non
77e0 65 20 66 6f 75 6e 64 2e 22 0a 20 20 3b 3b 20 4e 4f 54 45 3a 20 79 6f 75 20 63 61 6e 20 64 6f 20 e.found."...;;.NOTE:.you.can.do.
7800 61 20 62 69 74 20 6c 65 73 73 20 77 6f 72 6b 20 28 74 68 65 20 73 61 76 69 6e 67 73 20 64 65 63 a.bit.less.work.(the.savings.dec
7820 72 65 61 73 65 20 74 68 65 20 6d 6f 72 65 0a 20 20 3b 3b 20 62 72 61 6e 63 68 65 73 20 74 68 65 rease.the.more...;;.branches.the
7840 20 71 75 65 72 79 20 64 69 73 63 61 72 64 73 29 2c 20 62 75 74 20 69 74 27 73 20 73 69 6d 70 6c .query.discards),.but.it's.simpl
7860 65 72 20 61 6e 64 20 73 61 66 65 72 20 74 6f 20 6a 75 73 74 0a 20 20 3b 3b 20 68 61 76 65 20 74 er.and.safer.to.just...;;.have.t
7880 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 62 6f 74 68 20 65 6e 74 72 79 he.same.algorithm.for.both.entry
78a0 20 70 6f 69 6e 74 73 0a 20 20 28 63 61 72 20 28 65 73 78 6d 6c 2d 71 75 65 72 79 2d 61 6c 6c 20 .points...(car.(esxml-query-all.
78c0 73 65 6c 65 63 74 6f 72 20 72 6f 6f 74 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 73 78 6d selector.root)))..(provide.'esxm
78e0 6c 2d 71 75 65 72 79 29 0a 3b 3b 3b 20 65 73 78 6d 6c 2d 71 75 65 72 79 2e 65 6c 20 65 6e 64 73 l-query).;;;.esxml-query.el.ends
7900 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 00 .here...........................
7920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a00 65 73 78 6d 6c 2d 32 30 32 33 30 33 30 38 2e 32 32 35 34 2f 65 73 78 6d 6c 2e 65 6c 00 00 00 00 esxml-20230308.2254/esxml.el....
7a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7a60 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
7a80 30 30 32 34 31 32 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 36 31 36 00 20 30 00 00 00 0024126.00000000000.013616..0...
7aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b00 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...................
7b20 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...................
7b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7c00 3b 3b 3b 20 65 73 78 6d 6c 2e 65 6c 20 2d 2d 2d 20 4c 69 62 72 61 72 79 20 66 6f 72 20 77 6f 72 ;;;.esxml.el.---.Library.for.wor
7c20 6b 69 6e 67 20 77 69 74 68 20 78 6d 6c 20 76 69 61 20 65 73 78 6d 6c 20 61 6e 64 20 73 78 6d 6c king.with.xml.via.esxml.and.sxml
7c40 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 31 32 0a 0a 3b 3b 20 41 75 74 68 6f .;;.Copyright.(C).2012..;;.Autho
7c60 72 3a 20 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 20 3c 69 7a 61 6b 30 30 r:.Vanya.Izaksonas-Smith.<izak00
7c80 30 32 20 61 74 20 75 6d 6e 20 64 6f 74 20 65 64 75 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 02.at.umn.dot.edu>.;;.Maintainer
7ca0 3a 20 56 61 6e 79 61 20 49 7a 61 6b 73 6f 6e 61 73 2d 53 6d 69 74 68 0a 3b 3b 20 55 52 4c 3a 20 :.Vanya.Izaksonas-Smith.;;.URL:.
7cc0 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61 6c 69 37 31 33 2f 65 73 78 6d 6c https://github.com/tali713/esxml
7ce0 0a 3b 3b 20 43 72 65 61 74 65 64 3a 20 31 35 74 68 20 41 75 67 75 73 74 20 32 30 31 32 0a 3b 3b .;;.Created:.15th.August.2012.;;
7d00 20 56 65 72 73 69 6f 6e 3a 20 30 2e 33 2e 37 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 74 6f 6f .Version:.0.3.7.;;.Keywords:.too
7d20 6c 73 2c 20 6c 69 73 70 2c 20 63 6f 6d 6d 0a 3b 3b 20 44 65 73 63 72 69 70 74 69 6f 6e 3a 20 41 ls,.lisp,.comm.;;.Description:.A
7d40 20 6c 69 62 72 61 72 79 20 66 6f 72 20 65 61 73 69 6c 79 20 67 65 6e 65 72 61 74 69 6e 67 20 58 .library.for.easily.generating.X
7d60 4d 4c 2f 58 48 54 4d 4c 20 69 6e 20 65 6c 69 73 70 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 70 72 6f ML/XHTML.in.elisp.;;.;;.This.pro
7d80 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 gram.is.free.software;.you.can.r
7da0 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 edistribute.it.and/or.modify.;;.
7dc0 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 it.under.the.terms.of.the.GNU.Ge
7de0 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 neral.Public.License.as.publishe
7e00 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 d.by.;;.the.Free.Software.Founda
7e20 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 tion,.either.version.3.of.the.Li
7e40 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e cense,.or.;;.(at.your.option).an
7e60 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 y.later.version...;;.This.progra
7e80 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 m.is.distributed.in.the.hope.tha
7ea0 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 t.it.will.be.useful,.;;.but.WITH
7ec0 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 OUT.ANY.WARRANTY;.without.even.t
7ee0 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 he.implied.warranty.of.;;.MERCHA
7f00 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 NTABILITY.or.FITNESS.FOR.A.PARTI
7f20 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 CULAR.PURPOSE...See.the.;;.GNU.G
7f40 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 eneral.Public.License.for.more.d
7f60 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 etails...;;.You.should.have.rece
7f80 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 ived.a.copy.of.the.GNU.General.P
7fa0 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 ublic.License.;;.along.with.this
7fc0 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 .program...If.not,.see.<http://w
7fe0 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d ww.gnu.org/licenses/>...;;;.Comm
8000 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 69 73 20 58 4d 4c 2f 58 48 54 4d 4c 20 64 6f entary:..;;.This.is.XML/XHTML.do
8020 6e 65 20 77 69 74 68 20 53 2d 45 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 20 45 6d 61 63 73 4c 69 ne.with.S-Expressions.in.EmacsLi
8040 73 70 2e 20 20 53 69 6d 70 6c 79 2c 0a 3b 3b 20 74 68 69 73 20 69 73 20 74 68 65 20 65 61 73 69 sp...Simply,.;;.this.is.the.easi
8060 65 73 74 20 77 61 79 20 74 6f 20 77 72 69 74 65 20 48 54 4d 4c 20 6f 72 20 58 4d 4c 20 69 6e 20 est.way.to.write.HTML.or.XML.in.
8080 4c 69 73 70 2e 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 72 79 20 75 73 65 73 20 74 68 Lisp..;;.;;.This.library.uses.th
80a0 65 20 6e 61 74 69 76 65 20 66 6f 72 6d 20 6f 66 20 58 4d 4c 20 72 65 70 72 65 73 65 6e 74 61 74 e.native.form.of.XML.representat
80c0 69 6f 6e 20 61 73 20 75 73 65 64 20 62 79 0a 3b 3b 20 6d 61 6e 79 20 6c 69 62 72 61 72 69 65 73 ion.as.used.by.;;.many.libraries
80e0 20 61 6c 72 65 61 64 79 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 69 6e 20 65 6d 61 63 73 2e 20 .already.included.within.emacs..
8100 20 54 68 69 73 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 0a 3b 3b 20 77 69 6c 6c 20 62 65 20 .This.representation.;;.will.be.
8120 72 65 66 65 72 72 65 64 20 74 6f 20 61 73 20 22 65 73 78 6d 6c 22 20 74 68 72 6f 75 67 68 6f 75 referred.to.as."esxml".throughou
8140 74 20 74 68 69 73 20 6c 69 62 72 61 72 79 2e 20 20 53 65 65 0a 3b 3b 20 60 65 73 78 6d 6c 2d 74 t.this.library...See.;;.`esxml-t
8160 6f 2d 78 6d 6c 27 20 66 6f 72 20 61 20 63 6f 6e 63 69 73 65 20 64 65 73 63 72 69 70 74 69 6f 6e o-xml'.for.a.concise.description
8180 20 6f 66 20 74 68 65 20 66 6f 72 6d 61 74 2e 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 6c 69 62 72 61 .of.the.format..;;.;;.This.libra
81a0 72 79 20 69 73 20 6e 6f 74 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 75 73 65 64 20 64 69 ry.is.not.intended.to.be.used.di
81c0 72 65 63 74 6c 79 20 62 79 20 61 20 75 73 65 72 2c 20 74 68 6f 75 67 68 0a 3b 3b 20 69 74 20 63 rectly.by.a.user,.though.;;.it.c
81e0 65 72 74 61 69 6e 6c 79 20 63 6f 75 6c 64 20 62 65 2e 20 20 49 74 20 63 6f 75 6c 64 20 62 65 20 ertainly.could.be...It.could.be.
8200 75 73 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 20 73 74 61 74 69 63 20 68 74 6d 6c 2c 0a 3b 3b used.to.generate.static.html,.;;
8220 20 6f 72 20 75 73 65 20 61 20 6c 69 62 72 61 72 79 20 6c 69 6b 65 20 60 65 6c 6e 6f 64 65 27 20 .or.use.a.library.like.`elnode'.
8240 74 6f 20 73 65 72 76 65 20 64 79 6e 61 6d 69 63 20 70 61 67 65 73 2e 20 20 4f 72 20 65 76 65 6e to.serve.dynamic.pages...Or.even
8260 20 74 6f 0a 3b 3b 20 65 78 74 72 61 63 74 20 61 20 66 6f 72 6d 20 66 72 6f 6d 20 61 20 73 69 74 .to.;;.extract.a.form.from.a.sit
8280 65 20 74 6f 20 70 72 6f 64 75 63 65 20 61 6e 20 41 50 49 2e 0a 3b 3b 0a 3b 3b 20 54 4f 44 4f 3a e.to.produce.an.API..;;.;;.TODO:
82a0 20 42 65 74 74 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2c 20 6d 6f 72 65 20 63 6f 6e 76 .Better.documentation,.more.conv
82c0 65 6e 69 65 6e 63 65 2e 0a 3b 3b 0a 3b 3b 20 4e 4f 54 49 43 45 3a 20 43 6f 64 65 20 62 61 73 65 enience..;;.;;.NOTICE:.Code.base
82e0 20 77 69 6c 6c 20 62 65 20 74 72 61 6e 73 69 74 69 6f 6e 69 6e 67 20 74 6f 20 75 73 69 6e 67 20 .will.be.transitioning.to.using.
8300 70 63 61 73 65 20 69 6e 73 74 65 61 64 20 6f 66 0a 3b 3b 20 64 65 73 74 72 75 63 74 75 72 69 6e pcase.instead.of.;;.destructurin
8320 67 20 62 69 6e 64 20 77 68 65 72 65 76 65 72 20 70 6f 73 73 69 62 6c 65 2e 20 20 49 66 20 74 68 g.bind.wherever.possible...If.th
8340 69 73 20 6c 65 61 64 73 20 74 6f 20 68 61 72 64 20 74 6f 0a 3b 3b 20 64 65 62 75 67 20 63 6f 64 is.leads.to.hard.to.;;.debug.cod
8360 65 2c 20 70 6c 65 61 73 65 20 6c 65 74 20 6d 65 20 6b 6e 6f 77 2c 20 61 6e 64 20 49 20 77 69 6c e,.please.let.me.know,.and.I.wil
8380 6c 20 64 6f 20 77 68 61 74 65 76 65 72 20 49 20 63 61 6e 20 74 6f 0a 3b 3b 20 72 65 73 6f 6c 76 l.do.whatever.I.can.to.;;.resolv
83a0 65 20 74 68 65 73 65 20 69 73 73 75 65 73 2e 0a 3b 3b 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 e.these.issues..;;.;;;.Code:.(re
83c0 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 65 20 27 78 6d 6c 29 0a 28 72 quire.'cl-lib).(require.'xml).(r
83e0 65 71 75 69 72 65 20 27 70 63 61 73 65 29 0a 0a 28 64 65 66 75 6e 20 73 74 72 69 6e 67 2d 74 72 equire.'pcase)..(defun.string-tr
8400 69 6d 2d 77 68 69 74 65 73 70 61 63 65 20 28 73 74 72 69 6e 67 29 0a 20 20 22 41 20 73 69 6d 70 im-whitespace.(string)..."A.simp
8420 6c 65 20 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72 69 70 73 20 74 68 65 20 77 68 69 74 65 73 70 61 le.function,.strips.the.whitespa
8440 63 65 20 66 72 6f 6d 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 0a 65 6e 64 20 6f 66 20 74 68 65 ce.from.beginning.and.end.of.the
8460 20 73 74 72 69 6e 67 2e 20 20 4c 65 61 76 65 73 20 61 6c 6c 20 6f 74 68 65 72 20 77 68 69 74 65 .string...Leaves.all.other.white
8480 73 70 61 63 65 20 75 6e 74 6f 75 63 68 65 64 2e 22 0a 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 space.untouched."...(replace-reg
84a0 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 28 72 78 20 73 74 72 69 6e 67 2d 73 74 61 72 exp-in-string....(rx.string-star
84c0 74 20 28 2a 20 77 68 69 74 65 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 28 67 72 6f 75 70 20 28 t.(*.whitespace)........(group.(
84e0 2b 3f 20 61 6e 79 74 68 69 6e 67 29 29 0a 20 20 20 20 20 20 20 28 2a 20 77 68 69 74 65 73 70 61 +?.anything))........(*.whitespa
8500 63 65 29 20 73 74 72 69 6e 67 2d 65 6e 64 29 0a 20 20 20 22 5c 5c 31 22 0a 20 20 20 73 74 72 69 ce).string-end)...."\\1"....stri
8520 6e 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 28 65 73 78 6d ng))..(defun.esxml-trim-ws.(esxm
8540 6c 29 0a 20 20 22 54 68 69 73 20 6d 61 79 20 63 61 75 73 65 20 70 72 6f 62 6c 65 6d 73 2c 20 69 l)..."This.may.cause.problems,.i
8560 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 70 61 72 73 69 6e 67 20 78 6d 6c 20 69 6e 74 6f 20 s.intended.for.parsing.xml.into.
8580 73 78 6d 6c 0a 62 75 74 20 6d 61 79 20 65 72 6f 6e 65 6f 75 73 6c 79 20 64 65 6c 65 74 65 20 64 sxml.but.may.eroneously.delete.d
85a0 65 73 69 72 61 62 6c 65 20 77 68 69 74 65 20 73 70 61 63 65 2e 22 0a 20 20 28 69 66 20 28 73 74 esirable.white.space."...(if.(st
85c0 72 69 6e 67 70 20 65 73 78 6d 6c 29 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 2d 77 68 69 74 65 73 ringp.esxml).(string-trim-whites
85e0 70 61 63 65 20 65 73 78 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c pace.esxml).....(pcase-let.((`(,
8600 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 tag.,attrs...,body).esxml)).....
8620 20 20 60 28 2c 74 61 67 20 2c 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 ..`(,tag.,attrs..............,@(
8640 6d 61 70 63 61 72 20 27 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 62 6f 64 79 29 29 29 29 29 0a mapcar.'esxml-trim-ws.body))))).
8660 0a 28 64 65 66 75 6e 20 61 74 74 72 70 20 28 61 74 74 72 29 0a 20 20 22 52 65 74 75 72 6e 73 20 .(defun.attrp.(attr)..."Returns.
8680 74 20 69 66 20 61 74 74 72 20 69 73 20 61 20 61 6e 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 t.if.attr.is.a.an.esxml.attribut
86a0 65 2e 0a 41 6e 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 65 20 69 73 20 61 20 63 6f 6e 73 20 e..An.esxml.attribute.is.a.cons.
86c0 6f 66 20 74 68 65 20 66 6f 72 6d 20 28 73 79 6d 62 6f 6c 20 2e 20 73 74 72 69 6e 67 29 22 0a 20 of.the.form.(symbol...string)"..
86e0 28 61 6e 64 20 28 63 6f 6e 73 70 20 61 74 74 72 29 0a 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c (and.(consp.attr)........(symbol
8700 70 20 28 63 61 72 20 61 74 74 72 29 29 0a 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 70 20 28 63 p.(car.attr))........(stringp.(c
8720 64 72 20 61 74 74 72 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d 63 6f 6e 76 65 dr.attr))))..(defun.esxml--conve
8740 72 74 2d 70 61 69 72 20 28 61 74 74 72 29 0a 20 20 22 43 6f 6e 76 65 72 74 73 20 66 72 6f 6d 20 rt-pair.(attr)..."Converts.from.
8760 63 6f 6e 73 20 63 65 6c 6c 20 74 6f 20 61 74 74 72 69 62 75 74 65 20 70 61 69 72 2e 20 20 4e 6f cons.cell.to.attribute.pair...No
8780 74 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 67 65 6e 65 72 61 6c 20 75 73 65 2e 22 0a 20 20 28 t.intended.for.general.use."...(
87a0 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 63 61 72 20 2e 20 2c 63 64 72 29 20 61 74 74 72 29 pcase-let.((`(,car...,cdr).attr)
87c0 29 0a 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 63 64 72 20 73 74 72 69 6e 67 29 ).....(cl-check-type.cdr.string)
87e0 0a 20 20 20 20 28 63 6f 6e 63 61 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 63 61 72 29 0a 20 .....(concat.(symbol-name.car)..
8800 20 20 20 20 20 20 20 20 20 20 20 22 3d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e ..........."=".............(prin
8820 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e 67 20 63 1-to-string.(xml-escape-string.c
8840 64 72 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 61 74 74 72 73 70 20 28 61 74 74 72 73 29 0a 20 dr)))))..(defun.attrsp.(attrs)..
8860 20 20 20 22 52 65 74 75 72 6e 73 20 74 20 69 66 20 61 74 74 72 73 20 69 73 20 61 20 6c 69 73 74 ..."Returns.t.if.attrs.is.a.list
8880 20 6f 66 20 65 73 78 6d 6c 20 61 74 74 72 69 62 75 74 65 73 2e 0a 0a 53 65 65 3a 20 60 61 74 74 .of.esxml.attributes...See:.`att
88a0 72 70 27 22 0a 20 20 28 61 6e 64 20 28 6c 69 73 74 70 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 rp'"...(and.(listp.attrs).......
88c0 20 28 63 6c 2d 65 76 65 72 79 20 28 6c 61 6d 62 64 61 20 28 61 74 74 72 29 0a 20 20 20 20 20 20 .(cl-every.(lambda.(attr).......
88e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63 6f 6e 73 70 20 61 74 74 72 29 0a 20 .............(and.(consp.attr)..
8900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 70 20 .......................(symbolp.
8920 28 63 61 72 20 61 74 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (car.attr)).....................
8940 20 20 20 20 28 73 74 72 69 6e 67 70 20 28 63 64 72 20 61 74 74 72 29 29 29 29 0a 20 20 20 20 20 ....(stringp.(cdr.attr))))......
8960 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 ............attrs)))..(defun.esx
8980 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 28 65 73 78 6d 6c 29 0a 20 20 22 41 20 66 61 ml-validate-form.(esxml)..."A.fa
89a0 73 74 20 65 73 78 6d 6c 20 76 61 6c 69 64 61 74 6f 72 2e 20 20 57 69 6c 6c 20 65 72 72 6f 72 20 st.esxml.validator...Will.error.
89c0 6f 6e 20 69 6e 76 61 6c 69 64 20 73 75 62 70 61 72 74 73 20 6d 61 6b 69 6e 67 0a 69 74 20 73 75 on.invalid.subparts.making.it.su
89e0 69 74 61 62 6c 65 20 66 6f 72 20 68 69 6e 64 73 69 67 68 74 20 74 65 73 74 69 6e 67 2e 22 0a 20 itable.for.hindsight.testing."..
8a00 20 28 63 6f 6e 64 20 28 28 73 74 72 69 6e 67 70 20 65 73 78 6d 6c 29 20 6e 69 6c 29 0a 20 20 20 .(cond.((stringp.esxml).nil)....
8a20 20 20 20 20 20 28 28 3c 20 28 6c 65 6e 67 74 68 20 65 73 78 6d 6c 29 20 32 29 0a 20 20 20 20 20 .....((<.(length.esxml).2)......
8a40 20 20 20 20 28 65 72 72 6f 72 20 22 25 73 20 69 73 20 74 6f 6f 20 73 68 6f 72 74 20 74 6f 20 62 ....(error."%s.is.too.short.to.b
8a60 65 20 61 20 76 61 6c 69 64 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 6f 6e 22 20 65 73 78 6d e.a.valid.esxml.expression".esxm
8a80 6c 29 29 0a 20 20 20 20 20 20 20 20 28 74 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 l)).........(t.(pcase-let.((`(,t
8aa0 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 ag.,attrs...,body).esxml))......
8ac0 20 20 20 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 74 61 67 20 73 79 6d 62 6f ........(cl-check-type.tag.symbo
8ae0 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 61 l)..............(cl-check-type.a
8b00 74 74 72 73 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 ttrs.attrs)..............(mapcar
8b20 20 27 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 62 6f 64 79 29 29 29 29 29 0a .'esxml-validate-form.body))))).
8b40 0a 3b 3b 20 57 68 69 6c 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 75 6c 64 20 63 65 .;;.While.the.following.could.ce
8b60 72 74 61 69 6e 6c 79 20 68 61 76 65 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 75 73 69 6e 67 20 rtainly.have.been.written.using.
8b80 66 6f 72 6d 61 74 2c 0a 3b 3b 20 63 6f 6e 63 61 74 20 6d 61 6b 65 73 20 74 68 65 6d 20 65 61 73 format,.;;.concat.makes.them.eas
8ba0 69 65 72 20 74 6f 20 72 65 61 64 2e 20 20 55 70 64 61 74 65 20 6c 61 74 65 72 20 69 66 20 6e 65 ier.to.read...Update.later.if.ne
8bc0 63 63 65 73 61 72 79 20 66 6f 72 0a 3b 3b 20 65 66 66 69 63 69 65 6e 63 79 2e 0a 0a 3b 3b 20 54 ccesary.for.;;.efficiency...;;.T
8be0 68 6f 75 67 68 20 61 74 20 66 69 72 73 74 20 67 6c 61 6e 63 65 20 74 68 65 20 72 65 63 75 72 73 hough.at.first.glance.the.recurs
8c00 69 76 65 20 6e 61 74 75 72 65 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 ive.nature.of.this.function.migh
8c20 74 0a 3b 3b 20 67 69 76 65 20 6f 6e 65 20 70 61 75 73 65 2c 20 73 69 6e 63 65 20 78 6d 6c 20 69 t.;;.give.one.pause,.since.xml.i
8c40 73 20 61 20 72 65 63 75 72 73 69 76 65 20 64 61 74 61 20 74 79 70 65 2c 20 61 20 72 65 63 75 72 s.a.recursive.data.type,.a.recur
8c60 73 69 76 65 0a 3b 3b 20 70 61 72 73 65 72 20 69 73 20 61 6e 20 6f 70 74 69 6d 61 6c 20 73 74 72 sive.;;.parser.is.an.optimal.str
8c80 61 74 65 67 79 2e 20 20 65 61 63 68 20 6e 6f 64 65 20 77 69 6c 6c 20 62 65 20 76 69 73 69 74 65 ategy...each.node.will.be.visite
8ca0 64 20 65 78 61 63 74 6c 79 0a 3b 3b 20 6f 6e 63 65 20 64 75 72 69 6e 67 20 74 68 65 20 74 72 61 d.exactly.;;.once.during.the.tra
8cc0 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 46 75 72 74 68 65 72 2c 20 73 69 6e 63 nsformation..;;.;;.Further,.sinc
8ce0 65 20 61 20 73 74 72 69 6e 67 20 69 73 20 61 20 74 65 72 6d 69 6e 61 6c 20 6e 6f 64 65 20 61 6e e.a.string.is.a.terminal.node.an
8d00 64 20 73 69 6e 63 65 20 78 6d 6c 20 63 61 6e 20 62 65 0a 3b 3b 20 72 65 70 72 65 73 65 6e 74 65 d.since.xml.can.be.;;.represente
8d20 64 20 61 73 20 61 20 73 74 72 69 6e 67 2c 20 6e 6f 6e 20 64 79 6e 61 6d 69 63 20 70 6f 72 74 69 d.as.a.string,.non.dynamic.porti
8d40 6f 6e 73 20 6f 66 20 74 68 65 20 70 61 67 65 20 6d 61 79 20 62 65 0a 3b 3b 20 70 72 65 63 61 63 ons.of.the.page.may.be.;;.precac
8d60 68 65 64 20 71 75 69 74 65 20 65 61 73 69 6c 79 2e 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 2d hed.quite.easily..(defun.esxml--
8d80 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 28 65 73 78 6d 6c 29 0a 20 20 28 70 63 61 73 to-xml-recursive.(esxml)...(pcas
8da0 65 20 65 73 78 6d 6c 0a 20 20 20 20 28 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 e.esxml.....((pred.stringp).....
8dc0 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e 67 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 .(xml-escape-string.esxml)).....
8de0 28 60 28 72 61 77 2d 73 74 72 69 6e 67 20 2c 73 74 72 69 6e 67 29 0a 20 20 20 20 20 28 63 6c 2d (`(raw-string.,string)......(cl-
8e00 63 68 65 63 6b 2d 74 79 70 65 20 73 74 72 69 6e 67 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 check-type.string.stringp)......
8e20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 string).....(`(comment.nil.,body
8e40 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 21 2d 2d 20 22 20 62 6f 64 79 20 22 20 2d 2d )......(concat."<!--.".body.".--
8e60 3e 22 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 >")).....(`(,tag.,attrs...,body)
8e80 0a 20 20 20 20 20 3b 3b 20 63 6f 64 65 20 67 6f 65 73 20 68 65 72 65 20 74 6f 20 63 61 74 63 68 ......;;.code.goes.here.to.catch
8ea0 20 69 6e 76 61 6c 69 64 20 64 61 74 61 2e 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 22 20 .invalid.data.......(concat."<".
8ec0 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (symbol-name.tag)..............(
8ee0 77 68 65 6e 20 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 when.attrs................(conca
8f00 74 20 22 20 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d 63 6f 6e 76 65 72 74 t.".".(mapconcat.'esxml--convert
8f20 2d 70 61 69 72 20 61 74 74 72 73 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 -pair.attrs.".")))..............
8f40 28 69 66 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 (if.body..................(conca
8f60 74 20 22 3e 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d 74 6f 2d 78 6d 6c 2d t.">".(mapconcat.'esxml--to-xml-
8f80 72 65 63 75 72 73 69 76 65 20 62 6f 64 79 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 recursive.body."")..............
8fa0 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 2f 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 ............"</".(symbol-name.ta
8fc0 67 29 20 22 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2f 3e 22 29 29 29 29 29 g).">")................"/>")))))
8fe0 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 65 73 78 6d 6c 29 0a 20 20 ..(defun.esxml-to-xml.(esxml)...
9000 22 54 68 69 73 20 74 72 61 6e 73 6c 61 74 65 73 20 61 6e 20 65 73 78 6d 6c 20 65 78 70 72 65 73 "This.translates.an.esxml.expres
9020 73 69 6f 6e 2c 20 69 2e 65 2e 20 74 68 61 74 20 77 68 69 63 68 20 69 73 20 72 65 74 75 72 6e 65 sion,.i.e..that.which.is.returne
9040 64 0a 62 79 20 78 6d 6c 2d 70 61 72 73 65 2d 72 65 67 69 6f 6e 2e 20 54 68 65 20 73 74 72 75 63 d.by.xml-parse-region..The.struc
9060 74 75 72 65 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 20 61 6e 79 20 6f 66 20 74 68 65 0a 66 6f ture.is.defined.as.any.of.the.fo
9080 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 73 3a 0a 0a 2d 20 41 20 73 74 72 69 6e 67 2e 0a 0a 20 53 54 llowing.forms:..-.A.string....ST
90a0 52 49 4e 47 0a 0a 53 54 52 49 4e 47 3a 20 74 68 65 20 73 74 72 69 6e 67 20 69 74 20 69 73 20 72 RING..STRING:.the.string.it.is.r
90c0 65 74 75 72 6e 65 64 20 77 69 74 68 20 65 6e 74 69 74 69 65 73 20 65 73 63 61 70 65 64 0a 0a 2d eturned.with.entities.escaped..-
90e0 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 .A.list.where.the.first.element.
9100 69 73 20 74 68 65 20 72 61 77 2d 73 74 72 69 6e 67 20 73 79 6d 62 6f 6c 20 61 6e 64 20 74 68 65 is.the.raw-string.symbol.and.the
9120 0a 20 20 73 65 63 6f 6e 64 20 69 73 20 61 20 73 74 72 69 6e 67 2e 0a 0a 20 28 72 61 77 2d 73 74 ...second.is.a.string....(raw-st
9140 72 69 6e 67 20 53 54 52 49 4e 47 29 0a 0a 53 54 52 49 4e 47 3a 20 74 68 65 20 73 74 72 69 6e 67 ring.STRING)..STRING:.the.string
9160 20 69 73 20 72 65 74 75 72 6e 65 64 20 75 6e 63 68 61 6e 67 65 64 2e 20 54 68 69 73 20 61 6c 6c .is.returned.unchanged..This.all
9180 6f 77 73 20 66 6f 72 20 63 61 63 68 69 6e 67 0a 20 20 20 20 20 20 20 20 6f 66 20 61 6e 79 20 63 ows.for.caching.........of.any.c
91a0 6f 6e 73 74 61 6e 74 20 70 61 72 74 73 2c 20 73 75 63 68 20 61 73 20 68 65 61 64 65 72 73 20 61 onstant.parts,.such.as.headers.a
91c0 6e 64 20 66 6f 6f 74 65 72 73 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 nd.footers...-.A.list.where.the.
91e0 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 73 79 6d first.element.is.the.comment.sym
9200 62 6f 6c 20 61 6e 64 20 74 68 65 0a 20 20 73 65 63 6f 6e 64 20 69 73 20 61 20 73 74 72 69 6e 67 bol.and.the...second.is.a.string
9220 2e 0a 0a 20 28 63 6f 6d 6d 65 6e 74 20 53 54 52 49 4e 47 29 0a 0a 53 54 52 49 4e 47 3a 20 74 68 ....(comment.STRING)..STRING:.th
9240 65 20 73 74 72 69 6e 67 20 69 73 20 65 6d 62 65 64 64 65 64 20 69 6e 20 61 20 48 54 4d 4c 20 63 e.string.is.embedded.in.a.HTML.c
9260 6f 6d 6d 65 6e 74 2e 0a 0a 2d 20 41 20 6c 69 73 74 20 77 68 65 72 65 20 74 68 65 20 66 69 72 73 omment...-.A.list.where.the.firs
9280 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20 74 61 67 2c 20 74 68 65 20 73 65 63 6f 6e 64 t.element.is.the.tag,.the.second
92a0 20 69 73 0a 61 6e 20 61 6c 69 73 74 20 6f 66 20 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20 .is.an.alist.of.attribute.value.
92c0 70 61 69 72 73 20 61 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65 20 6c pairs.and.the.remainder.of.the.l
92e0 69 73 74 0a 69 73 20 30 20 6f 72 20 6d 6f 72 65 20 65 73 78 6d 6c 20 65 6c 65 6d 65 6e 74 73 2e ist.is.0.or.more.esxml.elements.
9300 0a 0a 20 28 54 41 47 20 41 54 54 52 53 20 26 72 65 73 74 20 42 4f 44 59 29 0a 0a 54 41 47 3a 20 ...(TAG.ATTRS.&rest.BODY)..TAG:.
9320 69 73 20 74 68 65 20 74 61 67 20 61 6e 64 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e is.the.tag.and.must.be.a.symbol.
9340 0a 0a 41 54 54 52 53 3a 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 61 74 74 72 69 62 75 74 ..ATTRS:.is.an.alist.of.attribut
9360 65 20 70 61 69 72 73 20 65 61 63 68 20 70 61 69 72 20 6d 75 73 74 20 62 65 20 6f 66 20 74 68 65 e.pairs.each.pair.must.be.of.the
9380 0a 20 20 20 20 20 20 20 66 6f 72 6d 20 28 4b 45 59 20 2e 20 56 41 4c 55 45 29 2e 0a 0a 4b 45 59 ........form.(KEY...VALUE)...KEY
93a0 3a 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 61 :.is.the.name.of.the.attribute.a
93c0 6e 64 20 6d 75 73 74 20 62 65 20 61 20 73 79 6d 62 6f 6c 2e 0a 0a 56 41 4c 55 45 3a 20 69 73 20 nd.must.be.a.symbol...VALUE:.is.
93e0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 61 6e 64 20 6d the.value.of.the.attribute.and.m
9400 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 2e 0a 0a 42 4f 44 59 3a 20 69 73 20 7a 65 72 6f 20 ust.be.a.string...BODY:.is.zero.
9420 6f 72 20 6d 6f 72 65 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 20 20 48 61 76 69 or.more.esxml.expressions...Havi
9440 6e 67 20 6e 6f 20 62 6f 64 79 20 66 6f 72 6d 73 0a 20 20 20 20 20 20 69 6d 70 6c 69 65 73 20 74 ng.no.body.forms.......implies.t
9460 68 61 74 20 74 68 65 20 74 61 67 20 73 68 6f 75 6c 64 20 62 65 20 73 65 6c 66 20 63 6c 6f 73 65 hat.the.tag.should.be.self.close
9480 64 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 0a 20 20 20 20 20 20 6f 6e 65 20 6f 72 20 6d 6f 72 d...If.there.is.......one.or.mor
94a0 65 20 62 6f 64 79 20 66 6f 72 6d 73 20 74 68 65 20 74 61 67 20 77 69 6c 6c 20 61 6c 77 61 79 73 e.body.forms.the.tag.will.always
94c0 20 62 65 20 65 78 70 6c 69 63 69 74 6c 79 0a 20 20 20 20 20 20 63 6c 6f 73 65 64 2c 20 65 76 65 .be.explicitly.......closed,.eve
94e0 6e 20 69 66 20 74 68 65 79 20 61 72 65 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 22 n.if.they.are.the.empty.string."
9500 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 28 65 73 ...(condition-case.nil.......(es
9520 78 6d 6c 2d 2d 74 6f 2d 78 6d 6c 2d 72 65 63 75 72 73 69 76 65 20 65 73 78 6d 6c 29 0a 20 20 20 xml--to-xml-recursive.esxml)....
9540 20 28 65 72 72 6f 72 20 28 65 73 78 6d 6c 2d 76 61 6c 69 64 61 74 65 2d 66 6f 72 6d 20 65 73 78 .(error.(esxml-validate-form.esx
9560 6d 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 70 70 2d 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 ml))))..(defun.pp-esxml-to-xml.(
9580 65 73 78 6d 6c 29 0a 20 20 22 54 68 69 73 20 74 72 61 6e 73 6c 61 74 65 73 20 61 6e 20 65 73 78 esxml)..."This.translates.an.esx
95a0 6d 6c 20 65 78 70 72 65 73 69 6f 6e 20 61 73 20 60 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 27 20 62 ml.expresion.as.`esxml-to-xml'.b
95c0 75 74 0a 69 6e 64 65 6e 74 73 20 69 74 20 66 6f 72 20 65 61 73 65 20 6f 66 20 68 75 6d 61 6e 20 ut.indents.it.for.ease.of.human.
95e0 72 65 61 64 61 62 69 6c 69 74 79 2c 20 69 74 20 69 73 20 6e 65 63 65 73 73 61 72 69 6c 79 0a 73 readability,.it.is.necessarily.s
9600 6c 6f 77 65 72 20 61 6e 64 20 77 69 6c 6c 20 70 72 6f 64 75 63 65 20 6c 6f 6e 67 65 72 20 6f 75 lower.and.will.produce.longer.ou
9620 74 70 75 74 2e 22 0a 20 20 28 70 63 61 73 65 20 65 73 78 6d 6c 0a 20 20 20 20 28 28 70 72 65 64 tput."...(pcase.esxml.....((pred
9640 20 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 28 78 6d 6c 2d 65 73 63 61 70 65 2d 73 74 72 69 6e .stringp)......(xml-escape-strin
9660 67 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 28 60 28 72 61 77 2d 73 74 72 69 6e 67 20 2c 73 74 72 g.esxml)).....(`(raw-string.,str
9680 69 6e 67 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 70 65 20 73 74 72 69 6e 67 20 ing)......(cl-check-type.string.
96a0 73 74 72 69 6e 67 70 29 0a 20 20 20 20 20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 60 28 63 6f 6d stringp)......string).....(`(com
96c0 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 21 ment.nil.,body)......(concat."<!
96e0 2d 2d 20 22 20 62 6f 64 79 20 22 20 2d 2d 3e 22 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2c --.".body.".-->")).....(`(,tag.,
9700 61 74 74 72 73 20 2e 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 attrs...,body)......(cl-check-ty
9720 70 65 20 74 61 67 20 73 79 6d 62 6f 6c 29 0a 20 20 20 20 20 28 63 6c 2d 63 68 65 63 6b 2d 74 79 pe.tag.symbol)......(cl-check-ty
9740 70 65 20 61 74 74 72 73 20 61 74 74 72 73 29 0a 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3c 22 pe.attrs.attrs)......(concat."<"
9760 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(symbol-name.tag)..............
9780 28 77 68 65 6e 20 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 (when.attrs................(conc
97a0 61 74 20 22 20 22 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 65 73 78 6d 6c 2d 2d 63 6f 6e 76 65 72 at.".".(mapconcat.'esxml--conver
97c0 74 2d 70 61 69 72 20 61 74 74 72 73 20 22 20 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-pair.attrs."."))).............
97e0 20 28 69 66 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 .(if.body..................(conc
9800 61 74 20 22 3e 22 20 28 69 66 20 28 63 6c 2d 65 76 65 72 79 20 27 73 74 72 69 6e 67 70 20 62 6f at.">".(if.(cl-every.'stringp.bo
9820 64 79 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 dy).............................
9840 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 62 6f 64 79 20 22 .....(mapconcat.'identity.body."
9860 20 22 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 .").............................
9880 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...(concat."\n".................
98a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d .......................(replace-
98c0 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 20 20 20 20 20 20 regexp-in-string................
98e0 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 22 5e 22 20 22 20 20 ........................."^"."..
9900 22 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 "...............................
9920 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 70 70 2d 65 73 78 6d 6c 2d 74 ..........(mapconcat.'pp-esxml-t
9940 6f 2d 78 6d 6c 20 62 6f 64 79 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o-xml.body."\n"))...............
9960 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 22 5c 6e 22 29 29 0a ........................."\n")).
9980 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 22 3c 2f 22 20 28 73 ........................."</".(s
99a0 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 61 67 29 20 22 3e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 ymbol-name.tag).">")............
99c0 20 20 20 20 22 2f 3e 22 29 29 29 0a 20 20 20 20 28 5f 0a 20 20 20 20 20 28 65 72 72 6f 72 20 22 ...."/>"))).....(_......(error."
99e0 25 73 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 20 65 73 78 6d 6c 20 65 78 70 72 65 73 73 69 %s.is.not.a.valid.esxml.expressi
9a00 6f 6e 22 20 65 73 78 6d 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 73 78 6d 6c 2d 74 6f 2d 65 73 on".esxml))))..(defun.sxml-to-es
9a20 78 6d 6c 20 28 73 78 6d 6c 29 0a 20 20 22 54 72 61 6e 73 6c 61 74 65 73 20 73 78 6d 6c 20 74 6f xml.(sxml)..."Translates.sxml.to
9a40 20 65 73 78 6d 6c 20 73 6f 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 73 74 61 6e 64 61 72 64 20 63 61 .esxml.so.the.common.standard.ca
9a60 6e 20 62 65 20 75 73 65 64 2e 0a 53 65 65 3a 20 68 74 74 70 3a 2f 2f 6f 6b 6d 69 6a 2e 6f 72 67 n.be.used..See:.http://okmij.org
9a80 2f 66 74 70 2f 53 63 68 65 6d 65 2f 53 58 4d 4c 2e 68 74 6d 6c 2e 20 41 64 64 69 74 69 6f 6e 61 /ftp/Scheme/SXML.html..Additiona
9aa0 6c 6c 79 2c 0a 28 2a 52 41 57 2d 53 54 52 49 4e 47 2a 20 5c 22 73 74 72 69 6e 67 5c 22 29 20 69 lly,.(*RAW-STRING*.\"string\").i
9ac0 73 20 74 72 61 6e 73 6c 61 74 65 64 20 74 6f 20 28 72 61 77 2d 73 74 72 69 6e 67 0a 5c 22 73 74 s.translated.to.(raw-string.\"st
9ae0 72 69 6e 67 5c 22 29 2e 22 0a 20 20 28 70 63 61 73 65 20 73 78 6d 6c 0a 20 20 20 20 28 60 28 2a ring\")."...(pcase.sxml.....(`(*
9b00 52 41 57 2d 53 54 52 49 4e 47 2a 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 28 72 61 77 2d 73 74 RAW-STRING*.,body)......`(raw-st
9b20 72 69 6e 67 20 2c 62 6f 64 79 29 29 0a 20 20 20 20 28 60 28 2a 43 4f 4d 4d 45 4e 54 2a 20 2c 62 ring.,body)).....(`(*COMMENT*.,b
9b40 6f 64 79 29 0a 20 20 20 20 20 60 28 63 6f 6d 6d 65 6e 74 20 6e 69 6c 20 2c 62 6f 64 79 29 29 0a ody)......`(comment.nil.,body)).
9b60 20 20 20 20 28 60 28 2c 74 61 67 20 28 40 20 2e 20 2c 61 74 74 72 73 29 20 2e 20 2c 62 6f 64 79 ....(`(,tag.(@...,attrs)...,body
9b80 29 0a 20 20 20 20 20 60 28 2c 74 61 67 20 2c 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 )......`(,tag.,(mapcar.(lambda.(
9ba0 61 74 74 72 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 28 63 6f attr)........................(co
9bc0 6e 73 20 28 63 61 72 20 61 74 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ns.(car.attr)...................
9be0 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 63 61 64 72 20 61 74 74 72 29 0a 20 20 20 20 20 ...........(or.(cadr.attr)......
9c00 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 70 72 69 ............................(pri
9c20 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 63 61 72 20 61 74 74 72 29 29 29 29 29 0a 20 20 20 20 n1-to-string.(car.attr))))).....
9c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 73 29 0a 20 20 20 20 20 20 20 20 .................attrs).........
9c60 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 27 73 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 62 6f 64 ....,@(mapcar.'sxml-to-esxml.bod
9c80 79 29 29 29 0a 20 20 20 20 28 60 28 2c 74 61 67 20 2e 20 2c 62 6f 64 79 29 0a 20 20 20 20 20 60 y))).....(`(,tag...,body)......`
9ca0 28 2c 74 61 67 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 6d 61 70 63 61 72 20 (,tag.nil.............,@(mapcar.
9cc0 27 73 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 62 6f 64 79 29 29 29 0a 20 20 20 20 28 28 61 6e 64 'sxml-to-esxml.body))).....((and
9ce0 20 73 78 6d 6c 20 28 70 72 65 64 20 73 74 72 69 6e 67 70 29 29 20 73 78 6d 6c 29 29 29 0a 0a 28 .sxml.(pred.stringp)).sxml)))..(
9d00 64 65 66 75 6e 20 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 73 78 6d 6c 29 0a 20 20 22 54 72 61 6e defun.sxml-to-xml.(sxml)..."Tran
9d20 73 6c 61 74 65 73 20 73 78 6d 6c 20 74 6f 20 78 6d 6c 2c 20 76 69 61 20 65 73 78 6d 6c 2c 20 68 slates.sxml.to.xml,.via.esxml,.h
9d40 65 79 20 69 74 27 73 20 6f 6e 6c 79 20 61 20 63 6f 6e 73 74 61 6e 74 0a 66 61 63 74 6f 72 2e 20 ey.it's.only.a.constant.factor..
9d60 3a 29 22 0a 20 20 28 65 73 78 6d 6c 2d 74 6f 2d 78 6d 6c 20 28 73 78 6d 6c 2d 74 6f 2d 65 73 78 :)"...(esxml-to-xml.(sxml-to-esx
9d80 6d 6c 20 73 78 6d 6c 29 29 29 0a 0a 0c 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 6d 61 6b 65 20 61 67 6e ml.sxml))).....;;.TODO:.make.agn
9da0 6f 73 74 69 63 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 20 6c 69 62 78 6d 6c 20 76 73 20 ostic.with.respect.to.libxml.vs.
9dc0 78 6d 6c 2e 65 6c 0a 28 64 65 66 75 6e 20 78 6d 6c 2d 74 6f 2d 65 73 78 6d 6c 20 28 73 74 72 69 xml.el.(defun.xml-to-esxml.(stri
9de0 6e 67 20 26 6f 70 74 69 6f 6e 61 6c 20 74 72 69 6d 29 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d ng.&optional.trim)...(with-temp-
9e00 62 75 66 66 65 72 0a 20 20 20 20 28 69 6e 73 65 72 74 20 73 74 72 69 6e 67 29 0a 20 20 20 20 28 buffer.....(insert.string).....(
9e20 6c 65 74 20 28 28 70 61 72 73 65 2d 74 72 65 65 20 28 6c 69 62 78 6d 6c 2d 70 61 72 73 65 2d 78 let.((parse-tree.(libxml-parse-x
9e40 6d 6c 2d 72 65 67 69 6f 6e 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 ml-region.(point-min)...........
9e60 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 ................................
9e80 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 74 72 .....(point-max)))).......(if.tr
9ea0 69 6d 0a 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 74 72 69 6d 2d 77 73 20 70 61 72 73 im...........(esxml-trim-ws.pars
9ec0 65 2d 74 72 65 65 29 0a 20 20 20 20 20 20 20 20 70 61 72 73 65 2d 74 72 65 65 29 29 29 29 0a 0a e-tree).........parse-tree))))..
9ee0 3b 3b 20 54 4f 44 4f 2c 20 6d 6f 76 65 20 74 6f 20 65 73 78 70 61 74 68 20 77 68 65 6e 20 6d 61 ;;.TODO,.move.to.esxpath.when.ma
9f00 74 75 72 65 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 65 74 2d 62 79 2d 6b 65 79 20 28 65 73 ture.(defun.esxml-get-by-key.(es
9f20 78 6d 6c 20 6b 65 79 20 76 61 6c 75 65 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 xml.key.value)..."Returns.a.list
9f40 20 6f 66 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 77 68 6f 73 65 20 77 74 74 72 69 62 75 74 65 .of.all.elements.whose.wttribute
9f60 20 4b 45 59 20 6d 61 74 63 68 0a 56 41 4c 55 45 2e 20 20 4b 45 59 20 73 68 6f 75 6c 64 20 62 65 .KEY.match.VALUE...KEY.should.be
9f80 20 61 20 73 79 6d 62 6f 6c 2c 20 61 6e 64 20 56 41 4c 55 45 20 73 68 6f 75 6c 64 20 62 65 20 61 .a.symbol,.and.VALUE.should.be.a
9fa0 20 73 74 72 69 6e 67 2e 0a 57 69 6c 6c 20 6e 6f 74 20 72 65 63 75 72 73 65 20 62 65 6c 6f 77 20 .string..Will.not.recurse.below.
9fc0 61 20 6d 61 74 63 68 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 70 20 65 73 78 a.match."...(unless.(stringp.esx
9fe0 6d 6c 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 61 67 20 2c 61 74 74 ml).....(pcase-let.((`(,tag.,att
a000 72 73 20 2e 20 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 65 rs...,body).esxml)).......(if.(e
a020 71 75 61 6c 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 qual.value..................(ass
a040 6f 63 2d 64 65 66 61 75 6c 74 20 6b 65 79 20 61 74 74 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 oc-default.key.attrs))..........
a060 20 28 6c 69 73 74 20 65 73 78 6d 6c 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 61 70 .(list.esxml).........(apply.'ap
a080 70 65 6e 64 20 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 73 65 78 70 29 0a 20 20 20 20 pend.(mapcar.(lambda.(sexp).....
a0a0 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 65 73 .............................(es
a0c0 78 6d 6c 2d 67 65 74 2d 62 79 2d 6b 65 79 20 73 65 78 70 20 6b 65 79 20 76 61 6c 75 65 29 29 0a xml-get-by-key.sexp.key.value)).
a0e0 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 62 ...............................b
a100 6f 64 79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 73 78 6d 6c 2d 67 65 74 2d 74 61 67 73 ody))))))..(defun.esxml-get-tags
a120 20 28 65 73 78 6d 6c 20 74 61 67 73 29 0a 20 20 22 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 .(esxml.tags)..."Returns.a.list.
a140 6f 66 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 77 68 6f 73 65 20 74 61 67 20 69 73 20 61 20 6d of.all.elements.whose.tag.is.a.m
a160 65 6d 62 65 72 20 6f 66 20 54 41 47 53 2e 0a 54 41 47 53 20 73 68 6f 75 6c 64 20 62 65 20 61 20 ember.of.TAGS..TAGS.should.be.a.
a180 6c 69 73 74 20 6f 66 20 74 61 67 73 20 74 6f 20 62 65 20 6d 61 74 63 68 65 64 20 61 67 61 69 6e list.of.tags.to.be.matched.again
a1a0 73 74 2e 20 57 69 6c 6c 20 6e 6f 74 0a 72 65 63 75 72 73 65 20 62 65 6c 6f 77 20 61 20 6d 61 74 st..Will.not.recurse.below.a.mat
a1c0 63 68 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 70 20 65 73 78 6d 6c 29 0a 20 ch."...(unless.(stringp.esxml)..
a1e0 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 74 61 67 20 2c 61 74 74 72 73 20 2e 20 ...(pcase-let.((`(,tag.,attrs...
a200 2c 62 6f 64 79 29 20 65 73 78 6d 6c 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 ,body).esxml)).......(if.(member
a220 20 74 61 67 20 74 61 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 65 73 78 6d 6c .tag.tags)...........(list.esxml
a240 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 61 70 70 65 6e 64 20 28 6d 61 70 63 61 72 ).........(apply.'append.(mapcar
a260 20 28 6c 61 6d 62 64 61 20 28 73 65 78 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(lambda.(sexp).................
a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 73 78 6d 6c 2d 67 65 74 2d 74 61 67 73 .................(esxml-get-tags
a2a0 20 73 65 78 70 20 74 61 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .sexp.tags))....................
a2c0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 ............body))))))..(defun.e
a2e0 73 78 6d 6c 2d 67 65 74 2d 66 6f 72 6d 73 20 28 65 73 78 6d 6c 29 0a 20 20 22 52 65 74 75 72 6e sxml-get-forms.(esxml)..."Return
a300 73 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 66 6f 72 6d 73 2e 22 0a 20 20 28 65 73 78 6d 6c s.a.list.of.all.forms."...(esxml
a320 2d 67 65 74 2d 74 61 67 73 20 65 73 78 6d 6c 20 27 28 66 6f 72 6d 29 29 29 0a 0a 3b 3b 20 74 61 -get-tags.esxml.'(form)))..;;.ta
a340 6b 65 6e 20 66 72 6f 6d 20 6b 76 0a 28 64 65 66 6d 61 63 72 6f 20 65 73 78 6d 6c 2d 64 65 73 74 ken.from.kv.(defmacro.esxml-dest
a360 72 75 63 74 75 72 69 6e 67 2d 6d 61 70 63 61 72 20 28 61 72 67 73 20 73 65 78 70 20 73 65 71 29 ructuring-mapcar.(args.sexp.seq)
a380 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 ...(declare.(indent.2))...(let.(
a3a0 28 65 6e 74 72 79 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 65 6e 74 72 79 22 29 29 29 0a 20 (entry.(make-symbol."entry")))..
a3c0 20 20 20 60 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 2c 65 6e 74 72 79 29 0a 20 20 20 ...`(mapcar.(lambda.(,entry)....
a3e0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 ............(cl-destructuring-bi
a400 6e 64 20 2c 61 72 67 73 20 2c 65 6e 74 72 79 20 2c 73 65 78 70 29 29 0a 20 20 20 20 20 20 20 20 nd.,args.,entry.,sexp)).........
a420 20 20 20 20 20 2c 73 65 71 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 73 78 6d 6c 29 0a 3b .....,seq)))..(provide.'esxml).;
a440 3b 3b 20 65 73 78 6d 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 ;;.esxml.el.ends.here...........
a460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................