annotate src/scanner.cpp @ 74:b7449114ebb0

start coding on new config syntax
author carl
date Sun, 10 Jul 2005 14:19:00 -0700
parents 2b369f7db7bf
children 1142e46be550
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1 /*
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
2
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
3 Copyright (c) 2004 Carl Byington - 510 Software Group, released under
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
4 the GPL version 2 or any later version at your choice available at
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
5 http://www.fsf.org/licenses/gpl.txt
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
6
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
7 */
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
8
73
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
9 #include "includes.h"
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
10
73
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
11 static char* scanner_version="$Id$";
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
12
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
13 typedef state PARSE[end_state];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
14
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
15 static PARSE parse_table[256] = {
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
16 // h_init, h_host, t_init, t_tag1, t_tag2, t_com1, t_com2, t_com3, t_com4, t_com5, t_disc, u_init, u_http, u_sla , u_url, d_init, d_pcnt, d_1, e_init, e_amp, e_num, m_init, m_eq, m_1, b_init, b_lf, b_lf2, b_64 uu_init, uu_lf, uu_lf2, uu_64
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
17
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
18 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x00
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
19 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x01
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
20 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x02
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
21 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x03
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
22 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x04
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
23 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x05
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
24 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x06
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
25 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x07
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
26 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x08
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
27 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com5, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x09 <tab>
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
28 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com5, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_nl, m_init, b_lf, b_init, b_lf2, b_init, uu_lf, uu_init, uu_lf2, uu_init, }, // 0x0a <lf>
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
29 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x0b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
30 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x0c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
31 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com5, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_cr, m_init, b_init, b_init, b_init, b_cr, uu_init, uu_init, uu_init, uu_cr, }, // 0x0d <cr>
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
32 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x0e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
33 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x0f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
34 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x10
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
35 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x11 xon char
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
36 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x12
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
37 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x13 xoff char
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
38 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x14
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
39 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x15
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
40 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x16
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
41 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x17
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
42 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x18
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
43 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x19
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
44 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x1a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
45 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x1b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
46 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x1c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
47 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x1d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
48 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x1e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
49 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x1f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
50 {h_init, h_end, t_init, t_end, t_end, t_end, t_end, t_com3, t_com3, t_com5, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x20 space
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
51 {h_init, h_end, t_init, t_com1, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x21 !
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
52 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x22 ""
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
53 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_num, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x23 #
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
54 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x24 $
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
55 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_pcnt, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x25 %
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
56 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_amp, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x26 &
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
57 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x27 '
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
58 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x28 (
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
59 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x29 )
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
60 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x2A *
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
61 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x2B +
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
62 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x2C ,
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
63 {h_host, h_host, t_init, t_disc, t_disc, t_com2, t_com3, t_com4, t_com5, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x2D -
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
64 {h_host, h_host, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x2E .
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
65 {h_init, h_end, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_sla, u_sla, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x2F /
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
66 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x30 0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
67 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x31 1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
68 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x32 2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
69 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x33 3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
70 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x34 4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
71 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x35 5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
72 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x36 6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
73 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x37 7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
74 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x38 8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
75 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x39 9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
76 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x3A :
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
77 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_semi, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x3B ;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
78 {h_init, h_end, t_tag1, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x3C <
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
79 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_eq, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x3D =
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
80 {h_init, h_end, t_init, t_end, t_end, t_end, t_end, t_com3, t_com3, t_end, t_end, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x3E >
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
81 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x3F ?
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
82 {h_init, h_host, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x40 @
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
83 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x41 A
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
84 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x42 B
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
85 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x43 C
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
86 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x44 D
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
87 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x45 E
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
88 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x46 F
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
89 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x47 G
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
90 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x48 H
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
91 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x49 I
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
92 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x4A J
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
93 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x4B K
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
94 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x4C L
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
95 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x4D M
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
96 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x4E N
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
97 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x4F O
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
98 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x50 P
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
99 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x51 Q
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
100 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x52 R
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
101 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x53 S
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
102 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x54 T
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
103 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x55 U
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
104 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x56 V
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
105 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x57 W
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
106 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_num, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x58 X
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
107 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x59 Y
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
108 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_64, uu_64, uu_64, }, // 0x5A Z
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
109 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x5B [
68
0e387cd3784b add uuencode decoding
carl
parents: 67
diff changeset
110 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x5C backslash
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
111 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x5D ]
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
112 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x5E ^
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
113 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x5F _
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
114 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_64, uu_64, uu_64, }, // 0x60 `
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
115 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x61 a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
116 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x62 b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
117 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x63 c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
118 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x64 d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
119 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x65 e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
120 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_1, d_2, e_init, e_init, e_num, m_init, m_1, m_2, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x66 f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
121 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x67 g
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
122 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x68 h
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
123 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x69 i
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
124 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x6A j
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
125 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x6B k
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
126 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x6C l
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
127 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x6D m
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
128 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x6E n
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
129 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x6F o
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
130 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x70 p
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
131 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x71 q
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
132 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x72 r
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
133 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x73 s
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
134 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_http, u_http, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x74 t
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
135 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x75 u
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
136 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x76 v
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
137 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x77 w
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
138 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_num, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x78 x
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
139 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x79 y
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
140 {h_host, h_host, t_init, t_tag2, t_tag2, t_tag2, t_tag2, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_url, u_url, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64, b_64, b_64, uu_init, uu_init, uu_init, uu_init, }, // 0x7A z
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
141 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x7B {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
142 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x7C |
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
143 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x7D }
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
144 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x7E ~
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
145 {h_init, h_end, t_init, t_disc, t_disc, t_disc, t_disc, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x7f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
146 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x80
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
147 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x81
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
148 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x82
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
149 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x83
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
150 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x84
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
151 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x85
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
152 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x86
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
153 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x87
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
154 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x88
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
155 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x89
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
156 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x8a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
157 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x8b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
158 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x8c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
159 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x8d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
160 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x8e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
161 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x8f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
162 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x90
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
163 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x91
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
164 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x92
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
165 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x93
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
166 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x94
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
167 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x95
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
168 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x96
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
169 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x97
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
170 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x98
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
171 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x99
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
172 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x9a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
173 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x9b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
174 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x9c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
175 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x9d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
176 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x9e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
177 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0x9f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
178 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
179 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
180 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
181 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
182 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
183 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
184 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
185 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
186 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
187 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xa9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
188 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xaa
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
189 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xab
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
190 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xac
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
191 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xad
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
192 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xae
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
193 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xaf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
194 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
195 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
196 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
197 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
198 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
199 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
200 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
201 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
202 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
203 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xb9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
204 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xba
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
205 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xbb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
206 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xbc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
207 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xbd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
208 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xbe
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
209 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xbf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
210 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
211 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
212 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
213 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
214 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
215 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
216 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
217 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
218 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
219 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xc9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
220 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xca
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
221 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xcb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
222 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xcc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
223 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xcd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
224 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xce
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
225 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xcf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
226 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
227 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
228 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
229 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
230 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
231 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
232 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
233 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
234 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
235 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xd9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
236 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xda
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
237 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xdb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
238 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xdc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
239 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xdd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
240 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xde
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
241 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xdf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
242 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
243 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
244 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
245 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
246 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
247 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
248 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
249 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
250 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
251 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xe9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
252 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xea
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
253 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xeb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
254 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xec
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
255 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xed
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
256 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xee
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
257 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xef
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
258 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
259 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
260 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
261 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
262 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
263 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
264 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
265 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
266 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
267 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xf9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
268 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xfa
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
269 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xfb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
270 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xfc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
271 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xfd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
272 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xfe
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
273 {h_init, h_end, t_init, t_bin, t_bin, t_bin, t_bin, t_com3, t_com3, t_com3, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init, uu_init, uu_init, uu_init, uu_init, }, // 0xff
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
274 };
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
275
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
276
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
277 u_char hex_decode[256] = {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
278 0, // 0x00
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
279 0, // 0x01
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
280 0, // 0x02
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
281 0, // 0x03
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
282 0, // 0x04
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
283 0, // 0x05
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
284 0, // 0x06
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
285 0, // 0x07
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
286 0, // 0x08
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
287 0, // 0x09 <tab>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
288 0, // 0x0a <lf>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
289 0, // 0x0b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
290 0, // 0x0c
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
291 0, // 0x0d <cr>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
292 0, // 0x0e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
293 0, // 0x0f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
294 0, // 0x10
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
295 0, // 0x11 xon char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
296 0, // 0x12
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
297 0, // 0x13 xoff char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
298 0, // 0x14
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
299 0, // 0x15
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
300 0, // 0x16
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
301 0, // 0x17
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
302 0, // 0x18
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
303 0, // 0x19
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
304 0, // 0x1a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
305 0, // 0x1b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
306 0, // 0x1c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
307 0, // 0x1d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
308 0, // 0x1e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
309 0, // 0x1f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
310 0, // 0x20 space
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
311 0, // 0x21 !
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
312 0, // 0x22 ""
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
313 0, // 0x23 #
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
314 0, // 0x24 $
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
315 0, // 0x25 %
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
316 0, // 0x26 &
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
317 0, // 0x27 '
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
318 0, // 0x28 (
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
319 0, // 0x29 )
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
320 0, // 0x2A *
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
321 0, // 0x2B +
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
322 0, // 0x2C ,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
323 0, // 0x2D -
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
324 0, // 0x2E .
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
325 0, // 0x2F /
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
326 0, // 0x30 0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
327 1, // 0x31 1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
328 2, // 0x32 2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
329 3, // 0x33 3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
330 4, // 0x34 4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
331 5, // 0x35 5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
332 6, // 0x36 6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
333 7, // 0x37 7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
334 8, // 0x38 8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
335 9, // 0x39 9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
336 0, // 0x3A :
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
337 0, // 0x3B ;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
338 0, // 0x3C <
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
339 0, // 0x3D =
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
340 0, // 0x3E >
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
341 0, // 0x3F ?
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
342 0, // 0x40 @
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
343 10, // 0x41 A
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
344 11, // 0x42 B
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
345 12, // 0x43 C
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
346 13, // 0x44 D
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
347 14, // 0x45 E
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
348 15, // 0x46 F
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
349 0, // 0x47 G
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
350 0, // 0x48 H
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
351 0, // 0x49 I
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
352 0, // 0x4A J
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
353 0, // 0x4B K
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
354 0, // 0x4C L
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
355 0, // 0x4D M
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
356 0, // 0x4E N
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
357 0, // 0x4F O
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
358 0, // 0x50 P
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
359 0, // 0x51 Q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
360 0, // 0x52 R
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
361 0, // 0x53 S
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
362 0, // 0x54 T
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
363 0, // 0x55 U
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
364 0, // 0x56 V
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
365 0, // 0x57 W
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
366 0, // 0x58 X
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
367 0, // 0x59 Y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
368 0, // 0x5A Z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
369 0, // 0x5B [
68
0e387cd3784b add uuencode decoding
carl
parents: 67
diff changeset
370 0, // 0x5C backslash
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
371 0, // 0x5D ]
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
372 0, // 0x5E ^
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
373 0, // 0x5F _
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
374 0, // 0x60 `
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
375 10, // 0x61 a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
376 11, // 0x62 b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
377 12, // 0x63 c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
378 13, // 0x64 d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
379 14, // 0x65 e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
380 15, // 0x66 f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
381 0, // 0x67 g
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
382 0, // 0x68 h
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
383 0, // 0x69 i
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
384 0, // 0x6A j
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
385 0, // 0x6B k
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
386 0, // 0x6C l
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
387 0, // 0x6D m
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
388 0, // 0x6E n
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
389 0, // 0x6F o
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
390 0, // 0x70 p
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
391 0, // 0x71 q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
392 0, // 0x72 r
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
393 0, // 0x73 s
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
394 0, // 0x74 t
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
395 0, // 0x75 u
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
396 0, // 0x76 v
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
397 0, // 0x77 w
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
398 0, // 0x78 x
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
399 0, // 0x79 y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
400 0, // 0x7A z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
401 0, // 0x7B {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
402 0, // 0x7C |
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
403 0, // 0x7D }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
404 0, // 0x7E ~
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
405 0, // 0x7f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
406 0, // 0x80
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
407 0, // 0x81
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
408 0, // 0x82
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
409 0, // 0x83
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
410 0, // 0x84
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
411 0, // 0x85
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
412 0, // 0x86
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
413 0, // 0x87
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
414 0, // 0x88
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
415 0, // 0x89
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
416 0, // 0x8a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
417 0, // 0x8b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
418 0, // 0x8c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
419 0, // 0x8d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
420 0, // 0x8e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
421 0, // 0x8f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
422 0, // 0x90
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
423 0, // 0x91
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
424 0, // 0x92
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
425 0, // 0x93
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
426 0, // 0x94
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
427 0, // 0x95
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
428 0, // 0x96
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
429 0, // 0x97
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
430 0, // 0x98
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
431 0, // 0x99
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
432 0, // 0x9a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
433 0, // 0x9b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
434 0, // 0x9c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
435 0, // 0x9d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
436 0, // 0x9e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
437 0, // 0x9f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
438 0, // 0xa0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
439 0, // 0xa1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
440 0, // 0xa2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
441 0, // 0xa3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
442 0, // 0xa4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
443 0, // 0xa5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
444 0, // 0xa6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
445 0, // 0xa7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
446 0, // 0xa8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
447 0, // 0xa9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
448 0, // 0xaa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
449 0, // 0xab
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
450 0, // 0xac
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
451 0, // 0xad
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
452 0, // 0xae
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
453 0, // 0xaf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
454 0, // 0xb0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
455 0, // 0xb1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
456 0, // 0xb2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
457 0, // 0xb3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
458 0, // 0xb4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
459 0, // 0xb5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
460 0, // 0xb6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
461 0, // 0xb7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
462 0, // 0xb8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
463 0, // 0xb9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
464 0, // 0xba
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
465 0, // 0xbb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
466 0, // 0xbc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
467 0, // 0xbd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
468 0, // 0xbe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
469 0, // 0xbf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
470 0, // 0xc0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
471 0, // 0xc1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
472 0, // 0xc2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
473 0, // 0xc3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
474 0, // 0xc4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
475 0, // 0xc5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
476 0, // 0xc6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
477 0, // 0xc7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
478 0, // 0xc8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
479 0, // 0xc9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
480 0, // 0xca
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
481 0, // 0xcb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
482 0, // 0xcc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
483 0, // 0xcd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
484 0, // 0xce
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
485 0, // 0xcf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
486 0, // 0xd0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
487 0, // 0xd1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
488 0, // 0xd2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
489 0, // 0xd3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
490 0, // 0xd4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
491 0, // 0xd5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
492 0, // 0xd6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
493 0, // 0xd7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
494 0, // 0xd8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
495 0, // 0xd9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
496 0, // 0xda
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
497 0, // 0xdb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
498 0, // 0xdc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
499 0, // 0xdd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
500 0, // 0xde
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
501 0, // 0xdf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
502 0, // 0xe0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
503 0, // 0xe1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
504 0, // 0xe2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
505 0, // 0xe3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
506 0, // 0xe4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
507 0, // 0xe5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
508 0, // 0xe6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
509 0, // 0xe7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
510 0, // 0xe8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
511 0, // 0xe9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
512 0, // 0xea
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
513 0, // 0xeb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
514 0, // 0xec
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
515 0, // 0xed
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
516 0, // 0xee
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
517 0, // 0xef
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
518 0, // 0xf0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
519 0, // 0xf1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
520 0, // 0xf2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
521 0, // 0xf3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
522 0, // 0xf4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
523 0, // 0xf5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
524 0, // 0xf6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
525 0, // 0xf7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
526 0, // 0xf8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
527 0, // 0xf9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
528 0, // 0xfa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
529 0, // 0xfb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
530 0, // 0xfc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
531 0, // 0xfd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
532 0, // 0xfe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
533 0, // 0xff
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
534 };
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
535
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
536 u_char b64_decode[256] = {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
537 0, // 0x00
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
538 0, // 0x01
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
539 0, // 0x02
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
540 0, // 0x03
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
541 0, // 0x04
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
542 0, // 0x05
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
543 0, // 0x06
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
544 0, // 0x07
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
545 0, // 0x08
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
546 0, // 0x09 <tab>
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
547 0, // 0x0a <lf>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
548 0, // 0x0b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
549 0, // 0x0c
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
550 0, // 0x0d <cr>
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
551 0, // 0x0e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
552 0, // 0x0f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
553 0, // 0x10
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
554 0, // 0x11 xon char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
555 0, // 0x12
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
556 0, // 0x13 xoff char
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
557 0, // 0x14
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
558 0, // 0x15
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
559 0, // 0x16
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
560 0, // 0x17
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
561 0, // 0x18
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
562 0, // 0x19
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
563 0, // 0x1a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
564 0, // 0x1b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
565 0, // 0x1c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
566 0, // 0x1d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
567 0, // 0x1e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
568 0, // 0x1f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
569 0, // 0x20 space
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
570 0, // 0x21 !
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
571 0, // 0x22 "
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
572 0, // 0x23 #
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
573 0, // 0x24 $
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
574 0, // 0x25 %
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
575 0, // 0x26 &
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
576 0, // 0x27 '
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
577 0, // 0x28 (
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
578 0, // 0x29 )
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
579 0, // 0x2A *
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
580 62, // 0x2B +
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
581 0, // 0x2C ,
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
582 0, // 0x2D -
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
583 0, // 0x2E .
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
584 63, // 0x2F /
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
585 52, // 0x30 0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
586 53, // 0x31 1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
587 54, // 0x32 2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
588 55, // 0x33 3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
589 56, // 0x34 4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
590 57, // 0x35 5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
591 58, // 0x36 6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
592 59, // 0x37 7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
593 60, // 0x38 8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
594 61, // 0x39 9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
595 0, // 0x3A :
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
596 0, // 0x3B ;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
597 0, // 0x3C <
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
598 0, // 0x3D =
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
599 0, // 0x3E >
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
600 0, // 0x3F ?
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
601 0, // 0x40 @
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
602 0, // 0x41 A
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
603 1, // 0x42 B
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
604 2, // 0x43 C
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
605 3, // 0x44 D
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
606 4, // 0x45 E
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
607 5, // 0x46 F
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
608 6, // 0x47 G
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
609 7, // 0x48 H
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
610 8, // 0x49 I
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
611 9, // 0x4A J
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
612 10, // 0x4B K
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
613 11, // 0x4C L
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
614 12, // 0x4D M
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
615 13, // 0x4E N
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
616 14, // 0x4F O
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
617 15, // 0x50 P
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
618 16, // 0x51 Q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
619 17, // 0x52 R
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
620 18, // 0x53 S
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
621 19, // 0x54 T
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
622 20, // 0x55 U
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
623 21, // 0x56 V
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
624 22, // 0x57 W
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
625 23, // 0x58 X
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
626 24, // 0x59 Y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
627 25, // 0x5A Z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
628 0, // 0x5B [
68
0e387cd3784b add uuencode decoding
carl
parents: 67
diff changeset
629 0, // 0x5C backslash
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
630 0, // 0x5D ]
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
631 0, // 0x5E ^
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
632 0, // 0x5F _
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
633 0, // 0x60 `
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
634 26, // 0x61 a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
635 27, // 0x62 b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
636 28, // 0x63 c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
637 29, // 0x64 d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
638 30, // 0x65 e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
639 31, // 0x66 f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
640 32, // 0x67 g
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
641 33, // 0x68 h
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
642 34, // 0x69 i
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
643 35, // 0x6A j
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
644 36, // 0x6B k
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
645 37, // 0x6C l
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
646 38, // 0x6D m
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
647 39, // 0x6E n
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
648 40, // 0x6F o
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
649 41, // 0x70 p
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
650 42, // 0x71 q
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
651 43, // 0x72 r
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
652 44, // 0x73 s
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
653 45, // 0x74 t
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
654 46, // 0x75 u
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
655 47, // 0x76 v
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
656 48, // 0x77 w
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
657 49, // 0x78 x
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
658 50, // 0x79 y
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
659 51, // 0x7A z
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
660 0, // 0x7B {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
661 0, // 0x7C |
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
662 0, // 0x7D }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
663 0, // 0x7E ~
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
664 0, // 0x7f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
665 0, // 0x80
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
666 0, // 0x81
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
667 0, // 0x82
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
668 0, // 0x83
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
669 0, // 0x84
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
670 0, // 0x85
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
671 0, // 0x86
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
672 0, // 0x87
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
673 0, // 0x88
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
674 0, // 0x89
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
675 0, // 0x8a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
676 0, // 0x8b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
677 0, // 0x8c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
678 0, // 0x8d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
679 0, // 0x8e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
680 0, // 0x8f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
681 0, // 0x90
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
682 0, // 0x91
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
683 0, // 0x92
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
684 0, // 0x93
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
685 0, // 0x94
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
686 0, // 0x95
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
687 0, // 0x96
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
688 0, // 0x97
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
689 0, // 0x98
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
690 0, // 0x99
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
691 0, // 0x9a
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
692 0, // 0x9b
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
693 0, // 0x9c
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
694 0, // 0x9d
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
695 0, // 0x9e
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
696 0, // 0x9f
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
697 0, // 0xa0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
698 0, // 0xa1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
699 0, // 0xa2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
700 0, // 0xa3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
701 0, // 0xa4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
702 0, // 0xa5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
703 0, // 0xa6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
704 0, // 0xa7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
705 0, // 0xa8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
706 0, // 0xa9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
707 0, // 0xaa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
708 0, // 0xab
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
709 0, // 0xac
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
710 0, // 0xad
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
711 0, // 0xae
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
712 0, // 0xaf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
713 0, // 0xb0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
714 0, // 0xb1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
715 0, // 0xb2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
716 0, // 0xb3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
717 0, // 0xb4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
718 0, // 0xb5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
719 0, // 0xb6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
720 0, // 0xb7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
721 0, // 0xb8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
722 0, // 0xb9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
723 0, // 0xba
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
724 0, // 0xbb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
725 0, // 0xbc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
726 0, // 0xbd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
727 0, // 0xbe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
728 0, // 0xbf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
729 0, // 0xc0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
730 0, // 0xc1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
731 0, // 0xc2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
732 0, // 0xc3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
733 0, // 0xc4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
734 0, // 0xc5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
735 0, // 0xc6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
736 0, // 0xc7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
737 0, // 0xc8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
738 0, // 0xc9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
739 0, // 0xca
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
740 0, // 0xcb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
741 0, // 0xcc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
742 0, // 0xcd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
743 0, // 0xce
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
744 0, // 0xcf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
745 0, // 0xd0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
746 0, // 0xd1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
747 0, // 0xd2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
748 0, // 0xd3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
749 0, // 0xd4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
750 0, // 0xd5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
751 0, // 0xd6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
752 0, // 0xd7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
753 0, // 0xd8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
754 0, // 0xd9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
755 0, // 0xda
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
756 0, // 0xdb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
757 0, // 0xdc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
758 0, // 0xdd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
759 0, // 0xde
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
760 0, // 0xdf
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
761 0, // 0xe0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
762 0, // 0xe1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
763 0, // 0xe2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
764 0, // 0xe3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
765 0, // 0xe4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
766 0, // 0xe5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
767 0, // 0xe6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
768 0, // 0xe7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
769 0, // 0xe8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
770 0, // 0xe9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
771 0, // 0xea
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
772 0, // 0xeb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
773 0, // 0xec
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
774 0, // 0xed
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
775 0, // 0xee
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
776 0, // 0xef
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
777 0, // 0xf0
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
778 0, // 0xf1
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
779 0, // 0xf2
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
780 0, // 0xf3
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
781 0, // 0xf4
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
782 0, // 0xf5
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
783 0, // 0xf6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
784 0, // 0xf7
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
785 0, // 0xf8
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
786 0, // 0xf9
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
787 0, // 0xfa
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
788 0, // 0xfb
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
789 0, // 0xfc
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
790 0, // 0xfd
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
791 0, // 0xfe
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
792 0, // 0xff
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
793 };
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
794
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
795 u_char uu_decode[256] = {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
796 0, // 0x00
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
797 0, // 0x01
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
798 0, // 0x02
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
799 0, // 0x03
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
800 0, // 0x04
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
801 0, // 0x05
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
802 0, // 0x06
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
803 0, // 0x07
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
804 0, // 0x08
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
805 0, // 0x09 <tab>
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
806 0, // 0x0a <lf>
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
807 0, // 0x0b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
808 0, // 0x0c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
809 0, // 0x0d <cr>
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
810 0, // 0x0e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
811 0, // 0x0f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
812 0, // 0x10
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
813 0, // 0x11 xon char
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
814 0, // 0x12
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
815 0, // 0x13 xoff char
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
816 0, // 0x14
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
817 0, // 0x15
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
818 0, // 0x16
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
819 0, // 0x17
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
820 0, // 0x18
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
821 0, // 0x19
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
822 0, // 0x1a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
823 0, // 0x1b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
824 0, // 0x1c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
825 0, // 0x1d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
826 0, // 0x1e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
827 0, // 0x1f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
828 0, // 0x20 space
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
829 1, // 0x21 !
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
830 2, // 0x22 "
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
831 3, // 0x23 #
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
832 4, // 0x24 $
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
833 5, // 0x25 %
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
834 6, // 0x26 &
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
835 7, // 0x27 '
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
836 8, // 0x28 (
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
837 9, // 0x29 )
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
838 10, // 0x2A *
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
839 11, // 0x2B +
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
840 12, // 0x2C ,
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
841 13, // 0x2D -
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
842 14, // 0x2E .
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
843 15, // 0x2F /
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
844 16, // 0x30 0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
845 17, // 0x31 1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
846 18, // 0x32 2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
847 19, // 0x33 3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
848 20, // 0x34 4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
849 21, // 0x35 5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
850 22, // 0x36 6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
851 23, // 0x37 7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
852 24, // 0x38 8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
853 25, // 0x39 9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
854 26, // 0x3A :
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
855 27, // 0x3B ;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
856 28, // 0x3C <
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
857 29, // 0x3D =
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
858 30, // 0x3E >
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
859 31, // 0x3F ?
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
860 32, // 0x40 @
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
861 33, // 0x41 A
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
862 34, // 0x42 B
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
863 35, // 0x43 C
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
864 36, // 0x44 D
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
865 37, // 0x45 E
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
866 38, // 0x46 F
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
867 39, // 0x47 G
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
868 40, // 0x48 H
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
869 41, // 0x49 I
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
870 42, // 0x4A J
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
871 43, // 0x4B K
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
872 44, // 0x4C L
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
873 45, // 0x4D M
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
874 46, // 0x4E N
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
875 47, // 0x4F O
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
876 48, // 0x50 P
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
877 49, // 0x51 Q
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
878 50, // 0x52 R
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
879 51, // 0x53 S
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
880 52, // 0x54 T
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
881 53, // 0x55 U
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
882 54, // 0x56 V
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
883 55, // 0x57 W
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
884 56, // 0x58 X
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
885 57, // 0x59 Y
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
886 58, // 0x5A Z
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
887 59, // 0x5B [
68
0e387cd3784b add uuencode decoding
carl
parents: 67
diff changeset
888 60, // 0x5C backslash
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
889 61, // 0x5D ]
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
890 62, // 0x5E ^
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
891 63, // 0x5F _
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
892 0, // 0x60 `
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
893 0, // 0x61 a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
894 0, // 0x62 b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
895 0, // 0x63 c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
896 0, // 0x64 d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
897 0, // 0x65 e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
898 0, // 0x66 f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
899 0, // 0x67 g
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
900 0, // 0x68 h
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
901 0, // 0x69 i
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
902 0, // 0x6A j
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
903 0, // 0x6B k
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
904 0, // 0x6C l
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
905 0, // 0x6D m
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
906 0, // 0x6E n
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
907 0, // 0x6F o
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
908 0, // 0x70 p
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
909 0, // 0x71 q
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
910 0, // 0x72 r
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
911 0, // 0x73 s
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
912 0, // 0x74 t
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
913 0, // 0x75 u
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
914 0, // 0x76 v
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
915 0, // 0x77 w
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
916 0, // 0x78 x
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
917 0, // 0x79 y
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
918 0, // 0x7A z
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
919 0, // 0x7B {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
920 0, // 0x7C |
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
921 0, // 0x7D }
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
922 0, // 0x7E ~
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
923 0, // 0x7f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
924 0, // 0x80
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
925 0, // 0x81
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
926 0, // 0x82
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
927 0, // 0x83
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
928 0, // 0x84
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
929 0, // 0x85
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
930 0, // 0x86
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
931 0, // 0x87
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
932 0, // 0x88
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
933 0, // 0x89
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
934 0, // 0x8a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
935 0, // 0x8b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
936 0, // 0x8c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
937 0, // 0x8d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
938 0, // 0x8e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
939 0, // 0x8f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
940 0, // 0x90
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
941 0, // 0x91
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
942 0, // 0x92
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
943 0, // 0x93
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
944 0, // 0x94
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
945 0, // 0x95
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
946 0, // 0x96
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
947 0, // 0x97
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
948 0, // 0x98
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
949 0, // 0x99
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
950 0, // 0x9a
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
951 0, // 0x9b
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
952 0, // 0x9c
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
953 0, // 0x9d
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
954 0, // 0x9e
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
955 0, // 0x9f
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
956 0, // 0xa0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
957 0, // 0xa1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
958 0, // 0xa2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
959 0, // 0xa3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
960 0, // 0xa4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
961 0, // 0xa5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
962 0, // 0xa6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
963 0, // 0xa7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
964 0, // 0xa8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
965 0, // 0xa9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
966 0, // 0xaa
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
967 0, // 0xab
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
968 0, // 0xac
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
969 0, // 0xad
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
970 0, // 0xae
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
971 0, // 0xaf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
972 0, // 0xb0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
973 0, // 0xb1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
974 0, // 0xb2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
975 0, // 0xb3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
976 0, // 0xb4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
977 0, // 0xb5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
978 0, // 0xb6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
979 0, // 0xb7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
980 0, // 0xb8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
981 0, // 0xb9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
982 0, // 0xba
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
983 0, // 0xbb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
984 0, // 0xbc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
985 0, // 0xbd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
986 0, // 0xbe
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
987 0, // 0xbf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
988 0, // 0xc0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
989 0, // 0xc1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
990 0, // 0xc2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
991 0, // 0xc3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
992 0, // 0xc4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
993 0, // 0xc5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
994 0, // 0xc6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
995 0, // 0xc7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
996 0, // 0xc8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
997 0, // 0xc9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
998 0, // 0xca
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
999 0, // 0xcb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1000 0, // 0xcc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1001 0, // 0xcd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1002 0, // 0xce
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1003 0, // 0xcf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1004 0, // 0xd0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1005 0, // 0xd1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1006 0, // 0xd2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1007 0, // 0xd3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1008 0, // 0xd4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1009 0, // 0xd5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1010 0, // 0xd6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1011 0, // 0xd7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1012 0, // 0xd8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1013 0, // 0xd9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1014 0, // 0xda
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1015 0, // 0xdb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1016 0, // 0xdc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1017 0, // 0xdd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1018 0, // 0xde
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1019 0, // 0xdf
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1020 0, // 0xe0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1021 0, // 0xe1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1022 0, // 0xe2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1023 0, // 0xe3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1024 0, // 0xe4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1025 0, // 0xe5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1026 0, // 0xe6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1027 0, // 0xe7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1028 0, // 0xe8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1029 0, // 0xe9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1030 0, // 0xea
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1031 0, // 0xeb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1032 0, // 0xec
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1033 0, // 0xed
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1034 0, // 0xee
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1035 0, // 0xef
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1036 0, // 0xf0
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1037 0, // 0xf1
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1038 0, // 0xf2
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1039 0, // 0xf3
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1040 0, // 0xf4
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1041 0, // 0xf5
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1042 0, // 0xf6
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1043 0, // 0xf7
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1044 0, // 0xf8
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1045 0, // 0xf9
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1046 0, // 0xfa
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1047 0, // 0xfb
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1048 0, // 0xfc
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1049 0, // 0xfd
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1050 0, // 0xfe
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1051 0, // 0xff
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1052 };
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1053
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1054
73
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1055 ////////////////////////////////////////////////
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1056 //
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1057 //
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1058 recorder::recorder(mlfiPriv *priv_, string_set &html_tags_, string_set &tlds_) {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1059 priv = priv_;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1060 html_tags = &html_tags_;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1061 tlds = &tlds_;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1062 bad_html_tags = 0;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1063 binary_tags = 0;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1064 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1065 recorder::~recorder() {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1066 empty();
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1067 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1068 void recorder::empty() {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1069 bad_html_tags = 0;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1070 binary_tags = 0;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1071 discard(hosts);
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1072 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1073 void recorder::new_url(char *host) {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1074 register_string(hosts, host);
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1075 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1076 void recorder::binary() {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1077 binary_tags++;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1078 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1079 void recorder::new_tag(char *tag) {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1080 string_set::iterator i = html_tags->find(tag);
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1081 if (i == html_tags->end()) {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1082 bad_html_tags++;
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1083 if (debug_syslog && (bad_html_tags < 10)) {
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1084 // only log the first 10 bad tags
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1085 char buf[200];
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1086 snprintf(buf, sizeof(buf), "bad html tag %s", tag);
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1087 my_syslog(priv, buf);
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1088 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1089 }
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1090 }
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1091
73
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1092
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1093 ////////////////////////////////////////////////
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1094 //
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1095 //
24
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1096 fsa::fsa(state init_, fsa *next1_, fsa *next2_, recorder *memory_) {
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1097 count = 0;
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1098 st = init_;
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1099 init = init_;
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1100 next1 = next1_;
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1101 next2 = next2_;
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1102 memory = memory_;
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1103 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1104
19
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1105 void fsa::error(char *err) {
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1106 count = 0;
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1107 st = init;
74
b7449114ebb0 start coding on new config syntax
carl
parents: 73
diff changeset
1108 if (err) my_syslog(memory->get_priv(), err);
19
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1109 }
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1110
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1111 void fsa::pusher() {
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1112 if (next1) next1->push(pending, count);
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1113 if (next2) next2->push(pending, count);
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1114 count = 0;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1115 }
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1116
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1117 void fsa::push(u_char *buf, int len) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1118 for (int i=0; i<len; i++) {
19
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1119 if (count == (PENDING_LIMIT-1)) error(NULL);
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1120 if (st >= end_state) error("finite state machine impossible state");
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1121 u_char c = buf[i];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1122 pending[count++] = c;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1123 st = parse_table[c][st];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1124 switch (st) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1125
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1126 //////////////////////////////
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1127 // host name recognizer
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1128 case h_end: {
18
041ea016b684 add scanning for bare hostnames
carl
parents: 17
diff changeset
1129 pending[--count] = '\0'; // null terminate host name by overwriting the terminator
27
43a4f6b3e668 add configurable host name limit and bad html tag limits.
carl
parents: 25
diff changeset
1130 if (!strchr((const char *)pending, '@')) {
43a4f6b3e668 add configurable host name limit and bad html tag limits.
carl
parents: 25
diff changeset
1131 // not an email address or message id
28
33e1e3910506 add configurable list of tlds
carl
parents: 27
diff changeset
1132 char *p1 = strchr((const char *)pending, '.');
33e1e3910506 add configurable list of tlds
carl
parents: 27
diff changeset
1133 char *p2 = strrchr((const char *)pending, '.');
52
a84752107aca host names cannot have consecutive periods.
carl
parents: 50
diff changeset
1134 char *p3 = strstr((const char *)pending, "..");
a84752107aca host names cannot have consecutive periods.
carl
parents: 50
diff changeset
1135 if (p1 && (p1 != p2) & !p3) {
a84752107aca host names cannot have consecutive periods.
carl
parents: 50
diff changeset
1136 // have two periods, so at least three components, and no empty components
44
6b79046b18c2 changes for 3.2
carl
parents: 42
diff changeset
1137 for (int i=0; i<count; i++) pending[i] = tolower(pending[i]);
28
33e1e3910506 add configurable list of tlds
carl
parents: 27
diff changeset
1138 // is last component a tld?
74
b7449114ebb0 start coding on new config syntax
carl
parents: 73
diff changeset
1139 string_set::iterator i = memory->get_tlds()->find(p2+1);
b7449114ebb0 start coding on new config syntax
carl
parents: 73
diff changeset
1140 if (i != memory->get_tlds()->end()) memory->new_url((char*)pending);
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1141 }
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1142 }
19
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1143 st = h_init;
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1144 } // fall thru
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1145
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1146 case h_init: {
18
041ea016b684 add scanning for bare hostnames
carl
parents: 17
diff changeset
1147 count = 0;
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1148 } break;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1149
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1150
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1151 //////////////////////////////
18
041ea016b684 add scanning for bare hostnames
carl
parents: 17
diff changeset
1152 // html tag discarder
25
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1153 case t_bin: {
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1154 memory->binary();
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1155 st = t_disc;
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1156 count = 0; // discard all characters
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1157 } break;
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1158
18
041ea016b684 add scanning for bare hostnames
carl
parents: 17
diff changeset
1159 case t_end: {
31
d16b27371533 consider <!tag> to be bad html tag
carl
parents: 30
diff changeset
1160 if (count > 1) {
24
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1161 pending[--count] = '\0'; // null terminate html tag
33
ce229348cdbe failed to lowercase the first char of html tags
carl
parents: 31
diff changeset
1162 for (int i=0; i<count; i++) pending[i] = tolower(pending[i]);
31
d16b27371533 consider <!tag> to be bad html tag
carl
parents: 30
diff changeset
1163 memory->new_tag((char*)pending);
24
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1164 }
25
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1165 st = (c == ' ') ? t_disc : t_init;
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1166 } // fall thru
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1167
31
d16b27371533 consider <!tag> to be bad html tag
carl
parents: 30
diff changeset
1168 case t_tag1:
30
8f43f8fa1ad7 ignore text including bad html tags inside comments
carl
parents: 29
diff changeset
1169 case t_com2:
8f43f8fa1ad7 ignore text including bad html tags inside comments
carl
parents: 29
diff changeset
1170 case t_com3:
8f43f8fa1ad7 ignore text including bad html tags inside comments
carl
parents: 29
diff changeset
1171 case t_com4:
8f43f8fa1ad7 ignore text including bad html tags inside comments
carl
parents: 29
diff changeset
1172 case t_com5:
25
6176e7b2e8af better scanning for bad html tags, allow binary zip and gz files with random char sequences
carl
parents: 24
diff changeset
1173 case t_disc: {
18
041ea016b684 add scanning for bare hostnames
carl
parents: 17
diff changeset
1174 count = 0; // discard all characters
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1175 } break;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1176
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1177 case t_init: {
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1178 pusher();
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1179 } break;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1180
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1181
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1182 //////////////////////////////
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1183 // url recognizer
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1184 case u_reco: {
19
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1185 if (count > 13) { // need some minimal length host name after the protocol
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1186 pending[--count] = '\0'; // null terminate host name by overwriting the terminator
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1187 char *p = strrchr((const char *)pending, '/');
52
a84752107aca host names cannot have consecutive periods.
carl
parents: 50
diff changeset
1188 if (p && // have a leading /
a84752107aca host names cannot have consecutive periods.
carl
parents: 50
diff changeset
1189 strchr(p, '.') && // require at least one . in a dns name
a84752107aca host names cannot have consecutive periods.
carl
parents: 50
diff changeset
1190 !strstr(p, "..") && // no empty components in the dns name
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1191 (strncasecmp((const char *)pending, "http", 4) == 0)) { // must start with protocol
44
6b79046b18c2 changes for 3.2
carl
parents: 42
diff changeset
1192 // we seem to have a host name
6b79046b18c2 changes for 3.2
carl
parents: 42
diff changeset
1193 p++; // skip the last /
6b79046b18c2 changes for 3.2
carl
parents: 42
diff changeset
1194 int c = strlen(p);
6b79046b18c2 changes for 3.2
carl
parents: 42
diff changeset
1195 for (int i=0; i<c; i++) p[i] = tolower(p[i]);
6b79046b18c2 changes for 3.2
carl
parents: 42
diff changeset
1196 memory->new_url(p); // record it
9
8c65411cd7ab integration work on url scanner
carl
parents: 8
diff changeset
1197 }
8
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1198 }
19
b8f5fa3dd5b8 fix problems in the state transitions causing impossible states
carl
parents: 18
diff changeset
1199 st = u_init;
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1200 } // fall thru
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1201
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1202 case u_init: {
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1203 count = 0; // discard all characters
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1204 } break;
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1205
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1206
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1207 //////////////////////////////
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1208 // url decoder %xx
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1209 case d_2: {
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1210 pending[0] = hex_decode[pending[1]] * 16 + hex_decode[pending[2]];
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1211 count = 1;
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1212 st = d_init;
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1213 } // fall thru
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1214
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1215 case d_init: {
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1216 pusher();
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1217 } break;
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1218
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1219
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1220 //////////////////////////////
41
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1221 // html entity decoder &#nnn; &#xnnn;
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1222 case e_semi: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1223 pending[--count] = '\0'; // null terminate the digit string by overwriting the semicolon
41
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1224 u_char f = pending[2];
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1225 if ((f == 'x') || (f == 'X')) {
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1226 pending[0] = strtol((const char *)pending+2, (char **)NULL, 16);
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1227 }
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1228 else {
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1229 pending[0] = atoi((const char *)pending+2);
d95af8129dfa updates for 3.2, changing file layout, add queueid to messages
carl
parents: 37
diff changeset
1230 }
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1231 count = 1;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1232 st = e_init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1233 } // fall thru
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1234
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1235 case e_init: {
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1236 pusher();
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1237 } break;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1238
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1239
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1240 //////////////////////////////
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1241 // mime decoder =xx
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1242 case m_2: {
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1243 pending[0] = hex_decode[pending[1]] * 16 + hex_decode[pending[2]];
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1244 count = 1;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1245 st = m_init;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1246 } // fall thru
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1247
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1248 case m_init: {
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1249 pusher();
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1250 } break;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1251
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1252 case m_cr: {
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1253 count = 1;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1254 st = m_eq;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1255 } break;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1256
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1257 case m_nl: {
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1258 count = 0;
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1259 st = m_init;
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1260 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1261
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1262
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1263 //////////////////////////////
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1264 // base64 decoder
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1265 case b_lf2: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1266 count--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1267 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1268
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1269 case b_cr: {
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1270 if ((count % 4) == 1) { // base64 data with trailing cr
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1271 count--; // ignore this cr
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1272 // might have proper b64 data
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1273 int cnt = 0;
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1274 for (int i=0; i<count; i+=4) {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1275 unsigned long a1 = b64_decode[pending[i]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1276 unsigned long a2 = b64_decode[pending[i+1]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1277 unsigned long a3 = b64_decode[pending[i+2]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1278 unsigned long a4 = b64_decode[pending[i+3]];
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1279 unsigned long a = (a1 << 18) | (a2 << 12) | (a3 << 6) | a4;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1280 pending[cnt++] = (a & 0x00ff0000) >> 16;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1281 pending[cnt++] = (a & 0x0000ff00) >> 8;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1282 pending[cnt++] = (a & 0x000000ff);
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1283 if ((char)pending[i+3] == '=') cnt--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1284 if ((char)pending[i+2] == '=') cnt--;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1285 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1286 count = cnt;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1287 st = b_lf2;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1288 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1289 else st = b_init;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1290 } // fall thru
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1291
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1292 case b_lf:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1293 case b_init: {
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1294 pusher();
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1295 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1296
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1297
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1298 //////////////////////////////
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1299 // uuencoding decoder
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1300 case uu_lf2: {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1301 count--;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1302 } break;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1303
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1304 case uu_cr: {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1305 if ((count % 4) == 2) { // leading count byte, uuencoded data, trailing cr
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1306 count--; // ignore this cr
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1307 int bytes = uu_decode[pending[0]]; // bytes we are supposed to get from this line
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1308 int size = (bytes+2)/3*4; // encoded size of those bytes
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1309 if (size == count-1) { // encoded size matches line length
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1310 // might have proper uu data
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1311 int cnt = 0;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1312 for (int i=1; i<count; i+=4) {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1313 unsigned long a1 = uu_decode[pending[i]];
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1314 unsigned long a2 = uu_decode[pending[i+1]];
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1315 unsigned long a3 = uu_decode[pending[i+2]];
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1316 unsigned long a4 = uu_decode[pending[i+3]];
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1317 unsigned long a = (a1 << 18) | (a2 << 12) | (a3 << 6) | a4;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1318 pending[cnt++] = (a & 0x00ff0000) >> 16;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1319 pending[cnt++] = (a & 0x0000ff00) >> 8;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1320 pending[cnt++] = (a & 0x000000ff);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1321 }
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1322 count = bytes;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1323 st = uu_lf2;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1324 }
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1325 else st = uu_init;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1326 }
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1327 else st = uu_init;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1328 } // fall thru
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1329
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1330 case uu_lf:
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1331 case uu_init: {
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1332 pusher();
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1333 } break;
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1334
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1335
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1336 //////////////////////////////
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1337 // states that just accumulate characters in the pending buffer
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1338 case h_host:
30
8f43f8fa1ad7 ignore text including bad html tags inside comments
carl
parents: 29
diff changeset
1339 case t_tag2:
31
d16b27371533 consider <!tag> to be bad html tag
carl
parents: 30
diff changeset
1340 case t_com1:
7
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1341 case u_http:
93ff6d1ef647 stable standalone scanner module
carl
parents: 6
diff changeset
1342 case u_url:
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1343 case u_sla:
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1344 case d_pcnt:
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1345 case d_1:
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1346 case e_amp:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1347 case e_num:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1348 case m_eq:
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1349 case m_1:
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1350 case b_64:
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1351 case uu_64:
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1352 default: {
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1353 } break;
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1354 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1355 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1356 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1357
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1358
73
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1359 ////////////////////////////////////////////////
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1360 //
2b369f7db7bf start coding on new config syntax
carl
parents: 69
diff changeset
1361 //
24
2e23b7184d2b start coding for bad html tag detection
carl
parents: 23
diff changeset
1362 url_scanner::url_scanner(recorder *memory) {
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1363 host_parser = new fsa(h_init, NULL, NULL, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1364 tags_parser = new fsa(t_init, host_parser, NULL, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1365 urls_parser = new fsa(u_init, NULL, NULL, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1366 urld_parser = new fsa(d_init, urls_parser, tags_parser, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1367 html_parser = new fsa(e_init, urld_parser, NULL, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1368 mime_parser = new fsa(m_init, html_parser, NULL, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1369 b64_parser = new fsa(b_init, mime_parser, NULL, memory);
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1370 uu_parser = new fsa(uu_init, b64_parser, NULL, memory);
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1371 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1372
8
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1373 url_scanner::~url_scanner() {
16
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1374 delete host_parser;
2ae8d953f1d0 add scanning for bare hostnames
carl
parents: 12
diff changeset
1375 delete tags_parser;
8
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1376 delete urls_parser;
23
06de5ab6a232 add url decoding stage, allow http:/ single / in yahoo redirector, allow ip address hostnames
carl
parents: 19
diff changeset
1377 delete urld_parser;
8
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1378 delete html_parser;
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1379 delete mime_parser;
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1380 delete b64_parser;
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1381 delete uu_parser;
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1382 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1383
8
dbe18921f741 integration work on url scanner
carl
parents: 7
diff changeset
1384 void url_scanner::scan(u_char *buffer, size_t length) {
67
a39c813e8f7b add uuencode decoding
carl
parents: 52
diff changeset
1385 uu_parser->push(buffer, length);
6
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1386 }
cea50d98a6cf start work on content url scanner
carl
parents:
diff changeset
1387