Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2014-07-25 09:38:16 +0000
committerGreg Wilkins2014-07-25 09:38:16 +0000
commita1696c013942d9a2d706e345152b02ee2a8afcb4 (patch)
treeecf3b2d55ae819245130e0bfd91da76b7d3795fc /jetty-http2/http2-hpack/src
parentc13be6d932b4e4515142286fcea1af65d48b3f08 (diff)
downloadorg.eclipse.jetty.project-a1696c013942d9a2d706e345152b02ee2a8afcb4.tar.gz
org.eclipse.jetty.project-a1696c013942d9a2d706e345152b02ee2a8afcb4.tar.xz
org.eclipse.jetty.project-a1696c013942d9a2d706e345152b02ee2a8afcb4.zip
updates for hpack huffman and examples
Diffstat (limited to 'jetty-http2/http2-hpack/src')
-rw-r--r--jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java128
-rw-r--r--jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java12
-rw-r--r--jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java515
-rw-r--r--jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java22
-rw-r--r--jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java4
-rw-r--r--jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java16
-rw-r--r--jetty-http2/http2-hpack/src/test/resources/jetty-logging.properties2
7 files changed, 347 insertions, 352 deletions
diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java
index 68f7f9882b..d0ac96b213 100644
--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java
+++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java
@@ -41,68 +41,67 @@ public class HpackContext
public static final String[][] STATIC_TABLE =
{
{null,null},
- /* 1 */ {":authority" ,null},
- /* 2 */ {":method" ,"GET"},
- /* 3 */ {":method" ,"POST"},
- /* 4 */ {":path" ,"/"},
- /* 5 */ {":path" ,"/index.html"},
- /* 6 */ {":scheme" ,"http"},
- /* 7 */ {":scheme" ,"https"},
- /* 8 */ {":status" ,"200"},
- /* 9 */ {":status" ,"204"},
- /* 10 */ {":status" ,"206"},
- /* 11 */ {":status" ,"304"},
- /* 12 */ {":status" ,"400"},
- /* 13 */ {":status" ,"404"},
- /* 14 */ {":status" ,"500"},
- /* 15 */ {"accept-charset" ,null},
- /* 16 */ {"accept-encoding" ,null},
- /* 17 */ {"accept-language" ,null},
- /* 18 */ {"accept-ranges" ,null},
- /* 19 */ {"accept" ,null},
- /* 20 */ {"access-control-allow-origin" ,null},
- /* 21 */ {"age" ,null},
- /* 22 */ {"allow" ,null},
- /* 23 */ {"authorization" ,null},
- /* 24 */ {"cache-control" ,null},
- /* 25 */ {"content-disposition" ,null},
- /* 26 */ {"content-encoding" ,null},
- /* 27 */ {"content-language" ,null},
- /* 28 */ {"content-length" ,null},
- /* 29 */ {"content-location" ,null},
- /* 30 */ {"content-range" ,null},
- /* 31 */ {"content-type" ,null},
- /* 32 */ {"cookie" ,null},
- /* 33 */ {"date" ,null},
- /* 34 */ {"etag" ,null},
- /* 35 */ {"expect" ,null},
- /* 36 */ {"expires" ,null},
- /* 37 */ {"from" ,null},
- /* 38 */ {"host" ,null},
- /* 39 */ {"if-match" ,null},
- /* 40 */ {"if-modified-since" ,null},
- /* 41 */ {"if-none-match" ,null},
- /* 42 */ {"if-range" ,null},
- /* 43 */ {"if-unmodified-since" ,null},
- /* 44 */ {"last-modified" ,null},
- /* 45 */ {"link" ,null},
- /* 46 */ {"location" ,null},
- /* 47 */ {"max-forwards" ,null},
- /* 48 */ {"proxy-authenticate" ,null},
- /* 49 */ {"proxy-authorization" ,null},
- /* 50 */ {"range" ,null},
- /* 51 */ {"referer" ,null},
- /* 52 */ {"refresh" ,null},
- /* 53 */ {"retry-after" ,null},
- /* 54 */ {"server" ,null},
- /* 55 */ {"set-cookie" ,null},
- /* 56 */ {"strict-transport-security" ,null},
- /* 57 */ {"transfer-encoding" ,null},
- /* 58 */ {"user-agent" ,null},
- /* 59 */ {"vary" ,null},
- /* 60 */ {"via" ,null},
- /* 61 */ {"www-authenticate" ,null},
-
+ /* 1 */ {":authority",null},
+ /* 2 */ {":method","GET"},
+ /* 3 */ {":method","POST"},
+ /* 4 */ {":path","/"},
+ /* 5 */ {":path","/index.html"},
+ /* 6 */ {":scheme","http"},
+ /* 7 */ {":scheme","https"},
+ /* 8 */ {":status","200"},
+ /* 9 */ {":status","204"},
+ /* 10 */ {":status","206"},
+ /* 11 */ {":status","304"},
+ /* 12 */ {":status","400"},
+ /* 13 */ {":status","404"},
+ /* 14 */ {":status","500"},
+ /* 15 */ {"accept-charset",null},
+ /* 16 */ {"accept-encoding","gzip, deflate"},
+ /* 17 */ {"accept-language",null},
+ /* 18 */ {"accept-ranges",null},
+ /* 19 */ {"accept",null},
+ /* 20 */ {"access-control-allow-origin",null},
+ /* 21 */ {"age",null},
+ /* 22 */ {"allow",null},
+ /* 23 */ {"authorization",null},
+ /* 24 */ {"cache-control",null},
+ /* 25 */ {"content-disposition",null},
+ /* 26 */ {"content-encoding",null},
+ /* 27 */ {"content-language",null},
+ /* 28 */ {"content-length",null},
+ /* 29 */ {"content-location",null},
+ /* 30 */ {"content-range",null},
+ /* 31 */ {"content-type",null},
+ /* 32 */ {"cookie",null},
+ /* 33 */ {"date",null},
+ /* 34 */ {"etag",null},
+ /* 35 */ {"expect",null},
+ /* 36 */ {"expires",null},
+ /* 37 */ {"from",null},
+ /* 38 */ {"host",null},
+ /* 39 */ {"if-match",null},
+ /* 40 */ {"if-modified-since",null},
+ /* 41 */ {"if-none-match",null},
+ /* 42 */ {"if-range",null},
+ /* 43 */ {"if-unmodified-since",null},
+ /* 44 */ {"last-modified",null},
+ /* 45 */ {"link",null},
+ /* 46 */ {"location",null},
+ /* 47 */ {"max-forwards",null},
+ /* 48 */ {"proxy-authenticate",null},
+ /* 49 */ {"proxy-authorization",null},
+ /* 50 */ {"range",null},
+ /* 51 */ {"referer",null},
+ /* 52 */ {"refresh",null},
+ /* 53 */ {"retry-after",null},
+ /* 54 */ {"server",null},
+ /* 55 */ {"set-cookie",null},
+ /* 56 */ {"strict-transport-security",null},
+ /* 57 */ {"transfer-encoding",null},
+ /* 58 */ {"user-agent",null},
+ /* 59 */ {"vary",null},
+ /* 60 */ {"via",null},
+ /* 61 */ {"www-authenticate",null},
};
private static final Map<HttpField,Entry> __staticFieldMap = new HashMap<>();
@@ -288,6 +287,11 @@ public class HpackContext
}
}
+ @Override
+ public String toString()
+ {
+ return String.format("HpackContext@%x{%s}",hashCode(),_headerTable);
+ }
diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java
index c19858ed63..d80b5f550d 100644
--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java
+++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java
@@ -82,7 +82,11 @@ public class HpackDecoder
// indexed
int index = NBitInteger.decode(buffer,7);
Entry entry=_context.get(index);
- if (entry.isStatic())
+ if (entry==null)
+ {
+ throw new BadMessageException("Unknown index "+index);
+ }
+ else if (entry.isStatic())
{
if (LOG.isDebugEnabled())
LOG.debug("decode IdxStatic {}",entry);
@@ -240,4 +244,10 @@ public class HpackDecoder
builder.append((char)(0x7f&array[i]));
return builder.toString();
}
+
+ @Override
+ public String toString()
+ {
+ return String.format("HpackDecoder@%x{%s}",hashCode(),_context);
+ }
}
diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java
index a80e193d9e..d8cbc5f2d3 100644
--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java
+++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java
@@ -27,264 +27,263 @@ public class Huffman
// http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#appendix-C
static final int[][] CODES =
{
- /* ( 0) |11111111|11111111|11101110|10 */ {0x3ffffba,26},
- /* ( 1) |11111111|11111111|11101110|11 */ {0x3ffffbb,26},
- /* ( 2) |11111111|11111111|11101111|00 */ {0x3ffffbc,26},
- /* ( 3) |11111111|11111111|11101111|01 */ {0x3ffffbd,26},
- /* ( 4) |11111111|11111111|11101111|10 */ {0x3ffffbe,26},
- /* ( 5) |11111111|11111111|11101111|11 */ {0x3ffffbf,26},
- /* ( 6) |11111111|11111111|11110000|00 */ {0x3ffffc0,26},
- /* ( 7) |11111111|11111111|11110000|01 */ {0x3ffffc1,26},
- /* ( 8) |11111111|11111111|11110000|10 */ {0x3ffffc2,26},
- /* ( 9) |11111111|11111111|11110000|11 */ {0x3ffffc3,26},
- /* ( 10) |11111111|11111111|11110001|00 */ {0x3ffffc4,26},
- /* ( 11) |11111111|11111111|11110001|01 */ {0x3ffffc5,26},
- /* ( 12) |11111111|11111111|11110001|10 */ {0x3ffffc6,26},
- /* ( 13) |11111111|11111111|11110001|11 */ {0x3ffffc7,26},
- /* ( 14) |11111111|11111111|11110010|00 */ {0x3ffffc8,26},
- /* ( 15) |11111111|11111111|11110010|01 */ {0x3ffffc9,26},
- /* ( 16) |11111111|11111111|11110010|10 */ {0x3ffffca,26},
- /* ( 17) |11111111|11111111|11110010|11 */ {0x3ffffcb,26},
- /* ( 18) |11111111|11111111|11110011|00 */ {0x3ffffcc,26},
- /* ( 19) |11111111|11111111|11110011|01 */ {0x3ffffcd,26},
- /* ( 20) |11111111|11111111|11110011|10 */ {0x3ffffce,26},
- /* ( 21) |11111111|11111111|11110011|11 */ {0x3ffffcf,26},
- /* ( 22) |11111111|11111111|11110100|00 */ {0x3ffffd0,26},
- /* ( 23) |11111111|11111111|11110100|01 */ {0x3ffffd1,26},
- /* ( 24) |11111111|11111111|11110100|10 */ {0x3ffffd2,26},
- /* ( 25) |11111111|11111111|11110100|11 */ {0x3ffffd3,26},
- /* ( 26) |11111111|11111111|11110101|00 */ {0x3ffffd4,26},
- /* ( 27) |11111111|11111111|11110101|01 */ {0x3ffffd5,26},
- /* ( 28) |11111111|11111111|11110101|10 */ {0x3ffffd6,26},
- /* ( 29) |11111111|11111111|11110101|11 */ {0x3ffffd7,26},
- /* ( 30) |11111111|11111111|11110110|00 */ {0x3ffffd8,26},
- /* ( 31) |11111111|11111111|11110110|01 */ {0x3ffffd9,26},
- /*' ' ( 32) |00110 */ {0x6, 5},
- /*'!' ( 33) |11111111|11100 */ {0x1ffc,13},
- /*'"' ( 34) |11111000|0 */ {0x1f0, 9},
- /*'#' ( 35) |11111111|111100 */ {0x3ffc,14},
- /*'$' ( 36) |11111111|1111100 */ {0x7ffc,15},
- /*'%' ( 37) |011110 */ {0x1e, 6},
- /*'&' ( 38) |1100100 */ {0x64, 7},
- /*''' ( 39) |11111111|11101 */ {0x1ffd,13},
- /*'(' ( 40) |11111110|10 */ {0x3fa,10},
- /*')' ( 41) |11111000|1 */ {0x1f1, 9},
- /*'*' ( 42) |11111110|11 */ {0x3fb,10},
- /*'+' ( 43) |11111111|00 */ {0x3fc,10},
- /*',' ( 44) |1100101 */ {0x65, 7},
- /*'-' ( 45) |1100110 */ {0x66, 7},
- /*'.' ( 46) |011111 */ {0x1f, 6},
- /*'/' ( 47) |00111 */ {0x7, 5},
- /*'0' ( 48) |0000 */ {0x0, 4},
- /*'1' ( 49) |0001 */ {0x1, 4},
- /*'2' ( 50) |0010 */ {0x2, 4},
- /*'3' ( 51) |01000 */ {0x8, 5},
- /*'4' ( 52) |100000 */ {0x20, 6},
- /*'5' ( 53) |100001 */ {0x21, 6},
- /*'6' ( 54) |100010 */ {0x22, 6},
- /*'7' ( 55) |100011 */ {0x23, 6},
- /*'8' ( 56) |100100 */ {0x24, 6},
- /*'9' ( 57) |100101 */ {0x25, 6},
- /*':' ( 58) |100110 */ {0x26, 6},
- /*';' ( 59) |11101100| */ {0xec, 8},
- /*'<' ( 60) |11111111|11111110|0 */ {0x1fffc,17},
- /*'=' ( 61) |100111 */ {0x27, 6},
- /*'>' ( 62) |11111111|1111101 */ {0x7ffd,15},
- /*'?' ( 63) |11111111|01 */ {0x3fd,10},
- /*'@' ( 64) |11111111|1111110 */ {0x7ffe,15},
- /*'A' ( 65) |1100111 */ {0x67, 7},
- /*'B' ( 66) |11101101| */ {0xed, 8},
- /*'C' ( 67) |11101110| */ {0xee, 8},
- /*'D' ( 68) |1101000 */ {0x68, 7},
- /*'E' ( 69) |11101111| */ {0xef, 8},
- /*'F' ( 70) |1101001 */ {0x69, 7},
- /*'G' ( 71) |1101010 */ {0x6a, 7},
- /*'H' ( 72) |11111001|0 */ {0x1f2, 9},
- /*'I' ( 73) |11110000| */ {0xf0, 8},
- /*'J' ( 74) |11111001|1 */ {0x1f3, 9},
- /*'K' ( 75) |11111010|0 */ {0x1f4, 9},
- /*'L' ( 76) |11111010|1 */ {0x1f5, 9},
- /*'M' ( 77) |1101011 */ {0x6b, 7},
- /*'N' ( 78) |1101100 */ {0x6c, 7},
- /*'O' ( 79) |11110001| */ {0xf1, 8},
- /*'P' ( 80) |11110010| */ {0xf2, 8},
- /*'Q' ( 81) |11111011|0 */ {0x1f6, 9},
- /*'R' ( 82) |11111011|1 */ {0x1f7, 9},
- /*'S' ( 83) |1101101 */ {0x6d, 7},
- /*'T' ( 84) |101000 */ {0x28, 6},
- /*'U' ( 85) |11110011| */ {0xf3, 8},
- /*'V' ( 86) |11111100|0 */ {0x1f8, 9},
- /*'W' ( 87) |11111100|1 */ {0x1f9, 9},
- /*'X' ( 88) |11110100| */ {0xf4, 8},
- /*'Y' ( 89) |11111101|0 */ {0x1fa, 9},
- /*'Z' ( 90) |11111101|1 */ {0x1fb, 9},
- /*'[' ( 91) |11111111|100 */ {0x7fc,11},
- /*'\' ( 92) |11111111|11111111|11110110|10 */ {0x3ffffda,26},
- /*']' ( 93) |11111111|101 */ {0x7fd,11},
- /*'^' ( 94) |11111111|111101 */ {0x3ffd,14},
- /*'_' ( 95) |1101110 */ {0x6e, 7},
- /*'`' ( 96) |11111111|11111111|10 */ {0x3fffe,18},
- /*'a' ( 97) |01001 */ {0x9, 5},
- /*'b' ( 98) |1101111 */ {0x6f, 7},
- /*'c' ( 99) |01010 */ {0xa, 5},
- /*'d' (100) |101001 */ {0x29, 6},
- /*'e' (101) |01011 */ {0xb, 5},
- /*'f' (102) |1110000 */ {0x70, 7},
- /*'g' (103) |101010 */ {0x2a, 6},
- /*'h' (104) |101011 */ {0x2b, 6},
- /*'i' (105) |01100 */ {0xc, 5},
- /*'j' (106) |11110101| */ {0xf5, 8},
- /*'k' (107) |11110110| */ {0xf6, 8},
- /*'l' (108) |101100 */ {0x2c, 6},
- /*'m' (109) |101101 */ {0x2d, 6},
- /*'n' (110) |101110 */ {0x2e, 6},
- /*'o' (111) |01101 */ {0xd, 5},
- /*'p' (112) |101111 */ {0x2f, 6},
- /*'q' (113) |11111110|0 */ {0x1fc, 9},
- /*'r' (114) |110000 */ {0x30, 6},
- /*'s' (115) |110001 */ {0x31, 6},
- /*'t' (116) |01110 */ {0xe, 5},
- /*'u' (117) |1110001 */ {0x71, 7},
- /*'v' (118) |1110010 */ {0x72, 7},
- /*'w' (119) |1110011 */ {0x73, 7},
- /*'x' (120) |1110100 */ {0x74, 7},
- /*'y' (121) |1110101 */ {0x75, 7},
- /*'z' (122) |11110111| */ {0xf7, 8},
- /*'{' (123) |11111111|11111110|1 */ {0x1fffd,17},
- /*'|' (124) |11111111|1100 */ {0xffc,12},
- /*'}' (125) |11111111|11111111|0 */ {0x1fffe,17},
- /*'~' (126) |11111111|1101 */ {0xffd,12},
- /* (127) |11111111|11111111|11110110|11 */ {0x3ffffdb,26},
- /* (128) |11111111|11111111|11110111|00 */ {0x3ffffdc,26},
- /* (129) |11111111|11111111|11110111|01 */ {0x3ffffdd,26},
- /* (130) |11111111|11111111|11110111|10 */ {0x3ffffde,26},
- /* (131) |11111111|11111111|11110111|11 */ {0x3ffffdf,26},
- /* (132) |11111111|11111111|11111000|00 */ {0x3ffffe0,26},
- /* (133) |11111111|11111111|11111000|01 */ {0x3ffffe1,26},
- /* (134) |11111111|11111111|11111000|10 */ {0x3ffffe2,26},
- /* (135) |11111111|11111111|11111000|11 */ {0x3ffffe3,26},
- /* (136) |11111111|11111111|11111001|00 */ {0x3ffffe4,26},
- /* (137) |11111111|11111111|11111001|01 */ {0x3ffffe5,26},
- /* (138) |11111111|11111111|11111001|10 */ {0x3ffffe6,26},
- /* (139) |11111111|11111111|11111001|11 */ {0x3ffffe7,26},
- /* (140) |11111111|11111111|11111010|00 */ {0x3ffffe8,26},
- /* (141) |11111111|11111111|11111010|01 */ {0x3ffffe9,26},
- /* (142) |11111111|11111111|11111010|10 */ {0x3ffffea,26},
- /* (143) |11111111|11111111|11111010|11 */ {0x3ffffeb,26},
- /* (144) |11111111|11111111|11111011|00 */ {0x3ffffec,26},
- /* (145) |11111111|11111111|11111011|01 */ {0x3ffffed,26},
- /* (146) |11111111|11111111|11111011|10 */ {0x3ffffee,26},
- /* (147) |11111111|11111111|11111011|11 */ {0x3ffffef,26},
- /* (148) |11111111|11111111|11111100|00 */ {0x3fffff0,26},
- /* (149) |11111111|11111111|11111100|01 */ {0x3fffff1,26},
- /* (150) |11111111|11111111|11111100|10 */ {0x3fffff2,26},
- /* (151) |11111111|11111111|11111100|11 */ {0x3fffff3,26},
- /* (152) |11111111|11111111|11111101|00 */ {0x3fffff4,26},
- /* (153) |11111111|11111111|11111101|01 */ {0x3fffff5,26},
- /* (154) |11111111|11111111|11111101|10 */ {0x3fffff6,26},
- /* (155) |11111111|11111111|11111101|11 */ {0x3fffff7,26},
- /* (156) |11111111|11111111|11111110|00 */ {0x3fffff8,26},
- /* (157) |11111111|11111111|11111110|01 */ {0x3fffff9,26},
- /* (158) |11111111|11111111|11111110|10 */ {0x3fffffa,26},
- /* (159) |11111111|11111111|11111110|11 */ {0x3fffffb,26},
- /* (160) |11111111|11111111|11111111|00 */ {0x3fffffc,26},
- /* (161) |11111111|11111111|11111111|01 */ {0x3fffffd,26},
- /* (162) |11111111|11111111|11111111|10 */ {0x3fffffe,26},
- /* (163) |11111111|11111111|11111111|11 */ {0x3ffffff,26},
- /* (164) |11111111|11111111|11000000|0 */ {0x1ffff80,25},
- /* (165) |11111111|11111111|11000000|1 */ {0x1ffff81,25},
- /* (166) |11111111|11111111|11000001|0 */ {0x1ffff82,25},
- /* (167) |11111111|11111111|11000001|1 */ {0x1ffff83,25},
- /* (168) |11111111|11111111|11000010|0 */ {0x1ffff84,25},
- /* (169) |11111111|11111111|11000010|1 */ {0x1ffff85,25},
- /* (170) |11111111|11111111|11000011|0 */ {0x1ffff86,25},
- /* (171) |11111111|11111111|11000011|1 */ {0x1ffff87,25},
- /* (172) |11111111|11111111|11000100|0 */ {0x1ffff88,25},
- /* (173) |11111111|11111111|11000100|1 */ {0x1ffff89,25},
- /* (174) |11111111|11111111|11000101|0 */ {0x1ffff8a,25},
- /* (175) |11111111|11111111|11000101|1 */ {0x1ffff8b,25},
- /* (176) |11111111|11111111|11000110|0 */ {0x1ffff8c,25},
- /* (177) |11111111|11111111|11000110|1 */ {0x1ffff8d,25},
- /* (178) |11111111|11111111|11000111|0 */ {0x1ffff8e,25},
- /* (179) |11111111|11111111|11000111|1 */ {0x1ffff8f,25},
- /* (180) |11111111|11111111|11001000|0 */ {0x1ffff90,25},
- /* (181) |11111111|11111111|11001000|1 */ {0x1ffff91,25},
- /* (182) |11111111|11111111|11001001|0 */ {0x1ffff92,25},
- /* (183) |11111111|11111111|11001001|1 */ {0x1ffff93,25},
- /* (184) |11111111|11111111|11001010|0 */ {0x1ffff94,25},
- /* (185) |11111111|11111111|11001010|1 */ {0x1ffff95,25},
- /* (186) |11111111|11111111|11001011|0 */ {0x1ffff96,25},
- /* (187) |11111111|11111111|11001011|1 */ {0x1ffff97,25},
- /* (188) |11111111|11111111|11001100|0 */ {0x1ffff98,25},
- /* (189) |11111111|11111111|11001100|1 */ {0x1ffff99,25},
- /* (190) |11111111|11111111|11001101|0 */ {0x1ffff9a,25},
- /* (191) |11111111|11111111|11001101|1 */ {0x1ffff9b,25},
- /* (192) |11111111|11111111|11001110|0 */ {0x1ffff9c,25},
- /* (193) |11111111|11111111|11001110|1 */ {0x1ffff9d,25},
- /* (194) |11111111|11111111|11001111|0 */ {0x1ffff9e,25},
- /* (195) |11111111|11111111|11001111|1 */ {0x1ffff9f,25},
- /* (196) |11111111|11111111|11010000|0 */ {0x1ffffa0,25},
- /* (197) |11111111|11111111|11010000|1 */ {0x1ffffa1,25},
- /* (198) |11111111|11111111|11010001|0 */ {0x1ffffa2,25},
- /* (199) |11111111|11111111|11010001|1 */ {0x1ffffa3,25},
- /* (200) |11111111|11111111|11010010|0 */ {0x1ffffa4,25},
- /* (201) |11111111|11111111|11010010|1 */ {0x1ffffa5,25},
- /* (202) |11111111|11111111|11010011|0 */ {0x1ffffa6,25},
- /* (203) |11111111|11111111|11010011|1 */ {0x1ffffa7,25},
- /* (204) |11111111|11111111|11010100|0 */ {0x1ffffa8,25},
- /* (205) |11111111|11111111|11010100|1 */ {0x1ffffa9,25},
- /* (206) |11111111|11111111|11010101|0 */ {0x1ffffaa,25},
- /* (207) |11111111|11111111|11010101|1 */ {0x1ffffab,25},
- /* (208) |11111111|11111111|11010110|0 */ {0x1ffffac,25},
- /* (209) |11111111|11111111|11010110|1 */ {0x1ffffad,25},
- /* (210) |11111111|11111111|11010111|0 */ {0x1ffffae,25},
- /* (211) |11111111|11111111|11010111|1 */ {0x1ffffaf,25},
- /* (212) |11111111|11111111|11011000|0 */ {0x1ffffb0,25},
- /* (213) |11111111|11111111|11011000|1 */ {0x1ffffb1,25},
- /* (214) |11111111|11111111|11011001|0 */ {0x1ffffb2,25},
- /* (215) |11111111|11111111|11011001|1 */ {0x1ffffb3,25},
- /* (216) |11111111|11111111|11011010|0 */ {0x1ffffb4,25},
- /* (217) |11111111|11111111|11011010|1 */ {0x1ffffb5,25},
- /* (218) |11111111|11111111|11011011|0 */ {0x1ffffb6,25},
- /* (219) |11111111|11111111|11011011|1 */ {0x1ffffb7,25},
- /* (220) |11111111|11111111|11011100|0 */ {0x1ffffb8,25},
- /* (221) |11111111|11111111|11011100|1 */ {0x1ffffb9,25},
- /* (222) |11111111|11111111|11011101|0 */ {0x1ffffba,25},
- /* (223) |11111111|11111111|11011101|1 */ {0x1ffffbb,25},
- /* (224) |11111111|11111111|11011110|0 */ {0x1ffffbc,25},
- /* (225) |11111111|11111111|11011110|1 */ {0x1ffffbd,25},
- /* (226) |11111111|11111111|11011111|0 */ {0x1ffffbe,25},
- /* (227) |11111111|11111111|11011111|1 */ {0x1ffffbf,25},
- /* (228) |11111111|11111111|11100000|0 */ {0x1ffffc0,25},
- /* (229) |11111111|11111111|11100000|1 */ {0x1ffffc1,25},
- /* (230) |11111111|11111111|11100001|0 */ {0x1ffffc2,25},
- /* (231) |11111111|11111111|11100001|1 */ {0x1ffffc3,25},
- /* (232) |11111111|11111111|11100010|0 */ {0x1ffffc4,25},
- /* (233) |11111111|11111111|11100010|1 */ {0x1ffffc5,25},
- /* (234) |11111111|11111111|11100011|0 */ {0x1ffffc6,25},
- /* (235) |11111111|11111111|11100011|1 */ {0x1ffffc7,25},
- /* (236) |11111111|11111111|11100100|0 */ {0x1ffffc8,25},
- /* (237) |11111111|11111111|11100100|1 */ {0x1ffffc9,25},
- /* (238) |11111111|11111111|11100101|0 */ {0x1ffffca,25},
- /* (239) |11111111|11111111|11100101|1 */ {0x1ffffcb,25},
- /* (240) |11111111|11111111|11100110|0 */ {0x1ffffcc,25},
- /* (241) |11111111|11111111|11100110|1 */ {0x1ffffcd,25},
- /* (242) |11111111|11111111|11100111|0 */ {0x1ffffce,25},
- /* (243) |11111111|11111111|11100111|1 */ {0x1ffffcf,25},
- /* (244) |11111111|11111111|11101000|0 */ {0x1ffffd0,25},
- /* (245) |11111111|11111111|11101000|1 */ {0x1ffffd1,25},
- /* (246) |11111111|11111111|11101001|0 */ {0x1ffffd2,25},
- /* (247) |11111111|11111111|11101001|1 */ {0x1ffffd3,25},
- /* (248) |11111111|11111111|11101010|0 */ {0x1ffffd4,25},
- /* (249) |11111111|11111111|11101010|1 */ {0x1ffffd5,25},
- /* (250) |11111111|11111111|11101011|0 */ {0x1ffffd6,25},
- /* (251) |11111111|11111111|11101011|1 */ {0x1ffffd7,25},
- /* (252) |11111111|11111111|11101100|0 */ {0x1ffffd8,25},
- /* (253) |11111111|11111111|11101100|1 */ {0x1ffffd9,25},
- /* (254) |11111111|11111111|11101101|0 */ {0x1ffffda,25},
- /* (255) |11111111|11111111|11101101|1 */ {0x1ffffdb,25},
- /*EOS (256) |11111111|11111111|11101110|0 */ {0x1ffffdc,25},
-
+ /* ( 0) |11111111|11000 */ {0x1ff8,13},
+ /* ( 1) |11111111|11111111|1011000 */ {0x7fffd8,23},
+ /* ( 2) |11111111|11111111|11111110|0010 */ {0xfffffe2,28},
+ /* ( 3) |11111111|11111111|11111110|0011 */ {0xfffffe3,28},
+ /* ( 4) |11111111|11111111|11111110|0100 */ {0xfffffe4,28},
+ /* ( 5) |11111111|11111111|11111110|0101 */ {0xfffffe5,28},
+ /* ( 6) |11111111|11111111|11111110|0110 */ {0xfffffe6,28},
+ /* ( 7) |11111111|11111111|11111110|0111 */ {0xfffffe7,28},
+ /* ( 8) |11111111|11111111|11111110|1000 */ {0xfffffe8,28},
+ /* ( 9) |11111111|11111111|11101010 */ {0xffffea,24},
+ /* ( 10) |11111111|11111111|11111111|111100 */ {0x3ffffffc,30},
+ /* ( 11) |11111111|11111111|11111110|1001 */ {0xfffffe9,28},
+ /* ( 12) |11111111|11111111|11111110|1010 */ {0xfffffea,28},
+ /* ( 13) |11111111|11111111|11111111|111101 */ {0x3ffffffd,30},
+ /* ( 14) |11111111|11111111|11111110|1011 */ {0xfffffeb,28},
+ /* ( 15) |11111111|11111111|11111110|1100 */ {0xfffffec,28},
+ /* ( 16) |11111111|11111111|11111110|1101 */ {0xfffffed,28},
+ /* ( 17) |11111111|11111111|11111110|1110 */ {0xfffffee,28},
+ /* ( 18) |11111111|11111111|11111110|1111 */ {0xfffffef,28},
+ /* ( 19) |11111111|11111111|11111111|0000 */ {0xffffff0,28},
+ /* ( 20) |11111111|11111111|11111111|0001 */ {0xffffff1,28},
+ /* ( 21) |11111111|11111111|11111111|0010 */ {0xffffff2,28},
+ /* ( 22) |11111111|11111111|11111111|111110 */ {0x3ffffffe,30},
+ /* ( 23) |11111111|11111111|11111111|0011 */ {0xffffff3,28},
+ /* ( 24) |11111111|11111111|11111111|0100 */ {0xffffff4,28},
+ /* ( 25) |11111111|11111111|11111111|0101 */ {0xffffff5,28},
+ /* ( 26) |11111111|11111111|11111111|0110 */ {0xffffff6,28},
+ /* ( 27) |11111111|11111111|11111111|0111 */ {0xffffff7,28},
+ /* ( 28) |11111111|11111111|11111111|1000 */ {0xffffff8,28},
+ /* ( 29) |11111111|11111111|11111111|1001 */ {0xffffff9,28},
+ /* ( 30) |11111111|11111111|11111111|1010 */ {0xffffffa,28},
+ /* ( 31) |11111111|11111111|11111111|1011 */ {0xffffffb,28},
+ /*' ' ( 32) |010100 */ {0x14, 6},
+ /*'!' ( 33) |11111110|00 */ {0x3f8,10},
+ /*'"' ( 34) |11111110|01 */ {0x3f9,10},
+ /*'#' ( 35) |11111111|1010 */ {0xffa,12},
+ /*'$' ( 36) |11111111|11001 */ {0x1ff9,13},
+ /*'%' ( 37) |010101 */ {0x15, 6},
+ /*'&' ( 38) |11111000 */ {0xf8, 8},
+ /*''' ( 39) |11111111|010 */ {0x7fa,11},
+ /*'(' ( 40) |11111110|10 */ {0x3fa,10},
+ /*')' ( 41) |11111110|11 */ {0x3fb,10},
+ /*'*' ( 42) |11111001 */ {0xf9, 8},
+ /*'+' ( 43) |11111111|011 */ {0x7fb,11},
+ /*',' ( 44) |11111010 */ {0xfa, 8},
+ /*'-' ( 45) |010110 */ {0x16, 6},
+ /*'.' ( 46) |010111 */ {0x17, 6},
+ /*'/' ( 47) |011000 */ {0x18, 6},
+ /*'0' ( 48) |00000 */ {0x0, 5},
+ /*'1' ( 49) |00001 */ {0x1, 5},
+ /*'2' ( 50) |00010 */ {0x2, 5},
+ /*'3' ( 51) |011001 */ {0x19, 6},
+ /*'4' ( 52) |011010 */ {0x1a, 6},
+ /*'5' ( 53) |011011 */ {0x1b, 6},
+ /*'6' ( 54) |011100 */ {0x1c, 6},
+ /*'7' ( 55) |011101 */ {0x1d, 6},
+ /*'8' ( 56) |011110 */ {0x1e, 6},
+ /*'9' ( 57) |011111 */ {0x1f, 6},
+ /*':' ( 58) |1011100 */ {0x5c, 7},
+ /*';' ( 59) |11111011 */ {0xfb, 8},
+ /*'<' ( 60) |11111111|1111100 */ {0x7ffc,15},
+ /*'=' ( 61) |100000 */ {0x20, 6},
+ /*'>' ( 62) |11111111|1011 */ {0xffb,12},
+ /*'?' ( 63) |11111111|00 */ {0x3fc,10},
+ /*'@' ( 64) |11111111|11010 */ {0x1ffa,13},
+ /*'A' ( 65) |100001 */ {0x21, 6},
+ /*'B' ( 66) |1011101 */ {0x5d, 7},
+ /*'C' ( 67) |1011110 */ {0x5e, 7},
+ /*'D' ( 68) |1011111 */ {0x5f, 7},
+ /*'E' ( 69) |1100000 */ {0x60, 7},
+ /*'F' ( 70) |1100001 */ {0x61, 7},
+ /*'G' ( 71) |1100010 */ {0x62, 7},
+ /*'H' ( 72) |1100011 */ {0x63, 7},
+ /*'I' ( 73) |1100100 */ {0x64, 7},
+ /*'J' ( 74) |1100101 */ {0x65, 7},
+ /*'K' ( 75) |1100110 */ {0x66, 7},
+ /*'L' ( 76) |1100111 */ {0x67, 7},
+ /*'M' ( 77) |1101000 */ {0x68, 7},
+ /*'N' ( 78) |1101001 */ {0x69, 7},
+ /*'O' ( 79) |1101010 */ {0x6a, 7},
+ /*'P' ( 80) |1101011 */ {0x6b, 7},
+ /*'Q' ( 81) |1101100 */ {0x6c, 7},
+ /*'R' ( 82) |1101101 */ {0x6d, 7},
+ /*'S' ( 83) |1101110 */ {0x6e, 7},
+ /*'T' ( 84) |1101111 */ {0x6f, 7},
+ /*'U' ( 85) |1110000 */ {0x70, 7},
+ /*'V' ( 86) |1110001 */ {0x71, 7},
+ /*'W' ( 87) |1110010 */ {0x72, 7},
+ /*'X' ( 88) |11111100 */ {0xfc, 8},
+ /*'Y' ( 89) |1110011 */ {0x73, 7},
+ /*'Z' ( 90) |11111101 */ {0xfd, 8},
+ /*'[' ( 91) |11111111|11011 */ {0x1ffb,13},
+ /*'\' ( 92) |11111111|11111110|000 */ {0x7fff0,19},
+ /*']' ( 93) |11111111|11100 */ {0x1ffc,13},
+ /*'^' ( 94) |11111111|111100 */ {0x3ffc,14},
+ /*'_' ( 95) |100010 */ {0x22, 6},
+ /*'`' ( 96) |11111111|1111101 */ {0x7ffd,15},
+ /*'a' ( 97) |00011 */ {0x3, 5},
+ /*'b' ( 98) |100011 */ {0x23, 6},
+ /*'c' ( 99) |00100 */ {0x4, 5},
+ /*'d' (100) |100100 */ {0x24, 6},
+ /*'e' (101) |00101 */ {0x5, 5},
+ /*'f' (102) |100101 */ {0x25, 6},
+ /*'g' (103) |100110 */ {0x26, 6},
+ /*'h' (104) |100111 */ {0x27, 6},
+ /*'i' (105) |00110 */ {0x6, 5},
+ /*'j' (106) |1110100 */ {0x74, 7},
+ /*'k' (107) |1110101 */ {0x75, 7},
+ /*'l' (108) |101000 */ {0x28, 6},
+ /*'m' (109) |101001 */ {0x29, 6},
+ /*'n' (110) |101010 */ {0x2a, 6},
+ /*'o' (111) |00111 */ {0x7, 5},
+ /*'p' (112) |101011 */ {0x2b, 6},
+ /*'q' (113) |1110110 */ {0x76, 7},
+ /*'r' (114) |101100 */ {0x2c, 6},
+ /*'s' (115) |01000 */ {0x8, 5},
+ /*'t' (116) |01001 */ {0x9, 5},
+ /*'u' (117) |101101 */ {0x2d, 6},
+ /*'v' (118) |1110111 */ {0x77, 7},
+ /*'w' (119) |1111000 */ {0x78, 7},
+ /*'x' (120) |1111001 */ {0x79, 7},
+ /*'y' (121) |1111010 */ {0x7a, 7},
+ /*'z' (122) |1111011 */ {0x7b, 7},
+ /*'{' (123) |11111111|1111110 */ {0x7ffe,15},
+ /*'|' (124) |11111111|100 */ {0x7fc,11},
+ /*'}' (125) |11111111|111101 */ {0x3ffd,14},
+ /*'~' (126) |11111111|11101 */ {0x1ffd,13},
+ /* (127) |11111111|11111111|11111111|1100 */ {0xffffffc,28},
+ /* (128) |11111111|11111110|0110 */ {0xfffe6,20},
+ /* (129) |11111111|11111111|010010 */ {0x3fffd2,22},
+ /* (130) |11111111|11111110|0111 */ {0xfffe7,20},
+ /* (131) |11111111|11111110|1000 */ {0xfffe8,20},
+ /* (132) |11111111|11111111|010011 */ {0x3fffd3,22},
+ /* (133) |11111111|11111111|010100 */ {0x3fffd4,22},
+ /* (134) |11111111|11111111|010101 */ {0x3fffd5,22},
+ /* (135) |11111111|11111111|1011001 */ {0x7fffd9,23},
+ /* (136) |11111111|11111111|010110 */ {0x3fffd6,22},
+ /* (137) |11111111|11111111|1011010 */ {0x7fffda,23},
+ /* (138) |11111111|11111111|1011011 */ {0x7fffdb,23},
+ /* (139) |11111111|11111111|1011100 */ {0x7fffdc,23},
+ /* (140) |11111111|11111111|1011101 */ {0x7fffdd,23},
+ /* (141) |11111111|11111111|1011110 */ {0x7fffde,23},
+ /* (142) |11111111|11111111|11101011 */ {0xffffeb,24},
+ /* (143) |11111111|11111111|1011111 */ {0x7fffdf,23},
+ /* (144) |11111111|11111111|11101100 */ {0xffffec,24},
+ /* (145) |11111111|11111111|11101101 */ {0xffffed,24},
+ /* (146) |11111111|11111111|010111 */ {0x3fffd7,22},
+ /* (147) |11111111|11111111|1100000 */ {0x7fffe0,23},
+ /* (148) |11111111|11111111|11101110 */ {0xffffee,24},
+ /* (149) |11111111|11111111|1100001 */ {0x7fffe1,23},
+ /* (150) |11111111|11111111|1100010 */ {0x7fffe2,23},
+ /* (151) |11111111|11111111|1100011 */ {0x7fffe3,23},
+ /* (152) |11111111|11111111|1100100 */ {0x7fffe4,23},
+ /* (153) |11111111|11111110|11100 */ {0x1fffdc,21},
+ /* (154) |11111111|11111111|011000 */ {0x3fffd8,22},
+ /* (155) |11111111|11111111|1100101 */ {0x7fffe5,23},
+ /* (156) |11111111|11111111|011001 */ {0x3fffd9,22},
+ /* (157) |11111111|11111111|1100110 */ {0x7fffe6,23},
+ /* (158) |11111111|11111111|1100111 */ {0x7fffe7,23},
+ /* (159) |11111111|11111111|11101111 */ {0xffffef,24},
+ /* (160) |11111111|11111111|011010 */ {0x3fffda,22},
+ /* (161) |11111111|11111110|11101 */ {0x1fffdd,21},
+ /* (162) |11111111|11111110|1001 */ {0xfffe9,20},
+ /* (163) |11111111|11111111|011011 */ {0x3fffdb,22},
+ /* (164) |11111111|11111111|011100 */ {0x3fffdc,22},
+ /* (165) |11111111|11111111|1101000 */ {0x7fffe8,23},
+ /* (166) |11111111|11111111|1101001 */ {0x7fffe9,23},
+ /* (167) |11111111|11111110|11110 */ {0x1fffde,21},
+ /* (168) |11111111|11111111|1101010 */ {0x7fffea,23},
+ /* (169) |11111111|11111111|011101 */ {0x3fffdd,22},
+ /* (170) |11111111|11111111|011110 */ {0x3fffde,22},
+ /* (171) |11111111|11111111|11110000 */ {0xfffff0,24},
+ /* (172) |11111111|11111110|11111 */ {0x1fffdf,21},
+ /* (173) |11111111|11111111|011111 */ {0x3fffdf,22},
+ /* (174) |11111111|11111111|1101011 */ {0x7fffeb,23},
+ /* (175) |11111111|11111111|1101100 */ {0x7fffec,23},
+ /* (176) |11111111|11111111|00000 */ {0x1fffe0,21},
+ /* (177) |11111111|11111111|00001 */ {0x1fffe1,21},
+ /* (178) |11111111|11111111|100000 */ {0x3fffe0,22},
+ /* (179) |11111111|11111111|00010 */ {0x1fffe2,21},
+ /* (180) |11111111|11111111|1101101 */ {0x7fffed,23},
+ /* (181) |11111111|11111111|100001 */ {0x3fffe1,22},
+ /* (182) |11111111|11111111|1101110 */ {0x7fffee,23},
+ /* (183) |11111111|11111111|1101111 */ {0x7fffef,23},
+ /* (184) |11111111|11111110|1010 */ {0xfffea,20},
+ /* (185) |11111111|11111111|100010 */ {0x3fffe2,22},
+ /* (186) |11111111|11111111|100011 */ {0x3fffe3,22},
+ /* (187) |11111111|11111111|100100 */ {0x3fffe4,22},
+ /* (188) |11111111|11111111|1110000 */ {0x7ffff0,23},
+ /* (189) |11111111|11111111|100101 */ {0x3fffe5,22},
+ /* (190) |11111111|11111111|100110 */ {0x3fffe6,22},
+ /* (191) |11111111|11111111|1110001 */ {0x7ffff1,23},
+ /* (192) |11111111|11111111|11111000|00 */ {0x3ffffe0,26},
+ /* (193) |11111111|11111111|11111000|01 */ {0x3ffffe1,26},
+ /* (194) |11111111|11111110|1011 */ {0xfffeb,20},
+ /* (195) |11111111|11111110|001 */ {0x7fff1,19},
+ /* (196) |11111111|11111111|100111 */ {0x3fffe7,22},
+ /* (197) |11111111|11111111|1110010 */ {0x7ffff2,23},
+ /* (198) |11111111|11111111|101000 */ {0x3fffe8,22},
+ /* (199) |11111111|11111111|11110110|0 */ {0x1ffffec,25},
+ /* (200) |11111111|11111111|11111000|10 */ {0x3ffffe2,26},
+ /* (201) |11111111|11111111|11111000|11 */ {0x3ffffe3,26},
+ /* (202) |11111111|11111111|11111001|00 */ {0x3ffffe4,26},
+ /* (203) |11111111|11111111|11111011|110 */ {0x7ffffde,27},
+ /* (204) |11111111|11111111|11111011|111 */ {0x7ffffdf,27},
+ /* (205) |11111111|11111111|11111001|01 */ {0x3ffffe5,26},
+ /* (206) |11111111|11111111|11110001 */ {0xfffff1,24},
+ /* (207) |11111111|11111111|11110110|1 */ {0x1ffffed,25},
+ /* (208) |11111111|11111110|010 */ {0x7fff2,19},
+ /* (209) |11111111|11111111|00011 */ {0x1fffe3,21},
+ /* (210) |11111111|11111111|11111001|10 */ {0x3ffffe6,26},
+ /* (211) |11111111|11111111|11111100|000 */ {0x7ffffe0,27},
+ /* (212) |11111111|11111111|11111100|001 */ {0x7ffffe1,27},
+ /* (213) |11111111|11111111|11111001|11 */ {0x3ffffe7,26},
+ /* (214) |11111111|11111111|11111100|010 */ {0x7ffffe2,27},
+ /* (215) |11111111|11111111|11110010 */ {0xfffff2,24},
+ /* (216) |11111111|11111111|00100 */ {0x1fffe4,21},
+ /* (217) |11111111|11111111|00101 */ {0x1fffe5,21},
+ /* (218) |11111111|11111111|11111010|00 */ {0x3ffffe8,26},
+ /* (219) |11111111|11111111|11111010|01 */ {0x3ffffe9,26},
+ /* (220) |11111111|11111111|11111111|1101 */ {0xffffffd,28},
+ /* (221) |11111111|11111111|11111100|011 */ {0x7ffffe3,27},
+ /* (222) |11111111|11111111|11111100|100 */ {0x7ffffe4,27},
+ /* (223) |11111111|11111111|11111100|101 */ {0x7ffffe5,27},
+ /* (224) |11111111|11111110|1100 */ {0xfffec,20},
+ /* (225) |11111111|11111111|11110011 */ {0xfffff3,24},
+ /* (226) |11111111|11111110|1101 */ {0xfffed,20},
+ /* (227) |11111111|11111111|00110 */ {0x1fffe6,21},
+ /* (228) |11111111|11111111|101001 */ {0x3fffe9,22},
+ /* (229) |11111111|11111111|00111 */ {0x1fffe7,21},
+ /* (230) |11111111|11111111|01000 */ {0x1fffe8,21},
+ /* (231) |11111111|11111111|1110011 */ {0x7ffff3,23},
+ /* (232) |11111111|11111111|101010 */ {0x3fffea,22},
+ /* (233) |11111111|11111111|101011 */ {0x3fffeb,22},
+ /* (234) |11111111|11111111|11110111|0 */ {0x1ffffee,25},
+ /* (235) |11111111|11111111|11110111|1 */ {0x1ffffef,25},
+ /* (236) |11111111|11111111|11110100 */ {0xfffff4,24},
+ /* (237) |11111111|11111111|11110101 */ {0xfffff5,24},
+ /* (238) |11111111|11111111|11111010|10 */ {0x3ffffea,26},
+ /* (239) |11111111|11111111|1110100 */ {0x7ffff4,23},
+ /* (240) |11111111|11111111|11111010|11 */ {0x3ffffeb,26},
+ /* (241) |11111111|11111111|11111100|110 */ {0x7ffffe6,27},
+ /* (242) |11111111|11111111|11111011|00 */ {0x3ffffec,26},
+ /* (243) |11111111|11111111|11111011|01 */ {0x3ffffed,26},
+ /* (244) |11111111|11111111|11111100|111 */ {0x7ffffe7,27},
+ /* (245) |11111111|11111111|11111101|000 */ {0x7ffffe8,27},
+ /* (246) |11111111|11111111|11111101|001 */ {0x7ffffe9,27},
+ /* (247) |11111111|11111111|11111101|010 */ {0x7ffffea,27},
+ /* (248) |11111111|11111111|11111101|011 */ {0x7ffffeb,27},
+ /* (249) |11111111|11111111|11111111|1110 */ {0xffffffe,28},
+ /* (250) |11111111|11111111|11111101|100 */ {0x7ffffec,27},
+ /* (251) |11111111|11111111|11111101|101 */ {0x7ffffed,27},
+ /* (252) |11111111|11111111|11111101|110 */ {0x7ffffee,27},
+ /* (253) |11111111|11111111|11111101|111 */ {0x7ffffef,27},
+ /* (254) |11111111|11111111|11111110|000 */ {0x7fffff0,27},
+ /* (255) |11111111|11111111|11111011|10 */ {0x3ffffee,26},
+ /*EOS (256) |11111111|11111111|11111111|111111 */ {0x3fffffff,30},
};
static final int[][] LCCODES = new int[CODES.length][];
diff --git a/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java b/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java
index 397a36d82a..fbbc1b5c95 100644
--- a/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java
+++ b/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java
@@ -92,13 +92,12 @@ public class HpackDecoderTest
}
@Test
- @Ignore
public void testDecodeD_4()
{
HpackDecoder decoder = new HpackDecoder(4096,8192);
// First request
- String encoded="828786448ce7cf9bebe89b6fb16fa9b6ff";
+ String encoded="828684418cf1e3c2e5f23a6ba0ab90f4ff";
ByteBuffer buffer = ByteBuffer.wrap(TypeUtil.fromHexString(encoded));
MetaData.Request request = (MetaData.Request)decoder.decode(buffer);
@@ -108,10 +107,9 @@ public class HpackDecoderTest
assertEquals("/",request.getURI().getPath());
assertEquals("www.example.com",request.getURI().getHost());
assertFalse(request.iterator().hasNext());
-
-
+
// Second request
- encoded="5c86b9b9949556bf";
+ encoded="828684be5886a8eb10649cbf";
buffer = ByteBuffer.wrap(TypeUtil.fromHexString(encoded));
request = (MetaData.Request)decoder.decode(buffer);
@@ -125,20 +123,6 @@ public class HpackDecoderTest
assertEquals(new HttpField("cache-control","no-cache"),iterator.next());
assertFalse(iterator.hasNext());
- // Third request
- encoded="30858c8b844088571c5cdb737b2faf89571c5cdb73724d9c57";
- buffer = ByteBuffer.wrap(TypeUtil.fromHexString(encoded));
-
- request = (MetaData.Request)decoder.decode(buffer);
-
- assertEquals("GET",request.getMethod());
- assertEquals(HttpScheme.HTTPS.asString(),request.getURI().getScheme());
- assertEquals("/index.html",request.getURI().getPath());
- assertEquals("www.example.com",request.getURI().getHost());
- iterator=request.iterator();
- assertTrue(iterator.hasNext());
- assertEquals(new HttpField("custom-key","custom-value"),iterator.next());
- assertFalse(iterator.hasNext());
}
}
diff --git a/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java b/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java
index c7bffc8b68..f927ebfe9a 100644
--- a/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java
+++ b/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java
@@ -25,9 +25,9 @@ import java.io.FilenameFilter;
import java.nio.ByteBuffer;
import java.util.Map;
-import org.eclipse.jetty.http.FinalMetaData;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.http.HttpVersion;
+import org.eclipse.jetty.http.MetaData;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.ajax.JSON;
@@ -121,7 +121,7 @@ public class HpackPerfTest
}
BufferUtil.clearToFill(buffer);
- encoder.encode(buffer,new FinalMetaData(HttpVersion.HTTP_2,fields));
+ encoder.encode(buffer,new MetaData(HttpVersion.HTTP_2,fields));
BufferUtil.flipToFlush(buffer,0);
_encodedSize+=buffer.remaining();
diff --git a/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java b/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java
index a0acecf315..134df0b3c8 100644
--- a/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java
+++ b/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java
@@ -29,15 +29,13 @@ public class HuffmanTest
{
String[][] tests =
{
- {"D.4.1","e7cf9bebe89b6fb16fa9b6ff","www.example.com"},
- {"D.4.2","b9b9949556bf","no-cache"},
- {"D.4.3k","571c5cdb737b2faf","custom-key"},
- {"D.4.3v","571c5cdb73724d9c57","custom-value"},
- {"D.6.1d","d6dbb29884de2a718805062098513109b56ba3","Mon, 21 Oct 2013 20:13:21 GMT"},
- {"D.6.1l","adcebf198e7e7cf9bebe89b6fb16fa9b6f","https://www.example.com"},
- {"D.6.2te","abdd97ff","gzip"},
- {"D.4.2cookie","e0d6cf9f6e8f9fd3e5f6fa76fefd3c7edf9eff1f2f0f3cfe9f6fcf7f8f879f61ad4f4cc9a973a2200ec3725e18b1b74e3f","foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"},
- {"D.6.2date","d6dbb29884de2a718805062098513111b56ba3","Mon, 21 Oct 2013 20:13:22 GMT"},
+ {"D.4.1","f1e3c2e5f23a6ba0ab90f4ff","www.example.com"},
+ {"D.4.2","a8eb10649cbf","no-cache"},
+ {"D.6.1k","6402","302"},
+ {"D.6.1v","aec3771a4b","private"},
+ {"D.6.1d","d07abe941054d444a8200595040b8166e082a62d1bff","Mon, 21 Oct 2013 20:13:21 GMT"},
+ {"D.6.1l","9d29ad171863c78f0b97c8e9ae82ae43d3","https://www.example.com"},
+ {"D.6.2te","640cff","303"},
};
@Test
diff --git a/jetty-http2/http2-hpack/src/test/resources/jetty-logging.properties b/jetty-http2/http2-hpack/src/test/resources/jetty-logging.properties
index d33a7c3277..e40e8e43ce 100644
--- a/jetty-http2/http2-hpack/src/test/resources/jetty-logging.properties
+++ b/jetty-http2/http2-hpack/src/test/resources/jetty-logging.properties
@@ -1,3 +1,3 @@
org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
org.eclipse.jetty.http2.LEVEL=INFO
-org.eclipse.jetty.http2.hpack.LEVEL=DEBUG
+org.eclipse.jetty.http2.hpack.LEVEL=INFO

Back to the top