diff options
Diffstat (limited to 'src/testcases/org/apache/poi')
74 files changed, 30125 insertions, 0 deletions
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord new file mode 100755 index 0000000000..6cebff51ba --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord @@ -0,0 +1,516 @@ +FC 00 20 +20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75 +66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20 +4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00 +00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43 +6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52 +54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33 +32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08 +00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F +77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11 +00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63 +6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69 +72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61 +73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A +00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E +69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35 +35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D +61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20 +50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73 +63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61 +7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00 +00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72 +75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50 +61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C +69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69 +74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69 +65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44 +6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27 +73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20 +47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A +61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20 +42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74 +65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D +61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F +32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32 +36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43 +20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00 +31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B +20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72 +6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34 +63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20 +5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65 +20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34 +32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D +31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F +56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44 +65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33 +0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04 +00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61 +20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00 +00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00 +00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00 +00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65 +72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44 +72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31 +2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52 +6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D +6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33 +34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C +69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72 +07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32 +30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73 +65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65 +65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00 +30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61 +75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74 +65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65 +72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31 +19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53 +70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52 +65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D +00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09 +00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72 +61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F +6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C +65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33 +30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76 +79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E +65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61 +72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61 +03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32 +35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A +61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72 +65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20 +4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00 +00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53 +54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20 +53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39 +30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63 +6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61 +63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36 +34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61 +72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63 +65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F +70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73 +6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53 +6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38 +31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65 +72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45 +6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C +65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32 +30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63 +65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74 +69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74 +6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64 +73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69 +74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31 +42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E +20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33 +04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F +20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69 +6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04 +00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65 +72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75 +6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00 +38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E +67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36 +30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00 +00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72 +74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73 +20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65 +72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05 +00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E +20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00 +00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75 +70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53 +68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00 +00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72 +74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30 +13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43 +61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73 +03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00 +4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52 +20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72 +67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C +63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42 +6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20 +6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45 +6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F +72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18 +00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31 +20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32 +30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69 +65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75 +61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34 +30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43 +7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30 +36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35 +35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30 +37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33 +33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73 +68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D +00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03 +00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C +20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D +00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08 +00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44 +6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62 +6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D +69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67 +61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27 +05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75 +73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72 +74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20 +22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37 +0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04 +00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F +72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73 +74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69 +6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53 +65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76 +65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67 +68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72 +6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72 +74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00 +00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68 +65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65 +72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35 +2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61 +63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30 +30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75 +6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B +05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20 +52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00 +00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56 +69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F +53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31 +32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61 +6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54 +68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47 +75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72 +69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E +73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34 +20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00 +57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53 +6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E +06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79 +73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E +20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48 +31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79 +20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69 +6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F +77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32 +30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73 +74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32 +20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00 +00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38 +35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76 +79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17 +00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72 +66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73 +65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45 +20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37 +1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66 +69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00 +00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39 +42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35 +31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D +35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48 +65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62 +65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E +69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00 +4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E +69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00 +00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D +33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41 +69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B +20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20 +4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C +64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35 +55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61 +6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20 +27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00 +53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F +72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50 +61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00 +31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74 +6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64 +65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B +44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61 +72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20 +4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73 +74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F +6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54 +36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61 +65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20 +4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00 +41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00 +00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00 +38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65 +20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20 +53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00 +00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61 +67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E +74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47 +72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35 +2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20 +4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00 +4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00 +47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C +69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39 +19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F +77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32 +32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72 +74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C +79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30 +31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56 +2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65 +07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D +37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34 +35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D +69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16 +00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C +20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B +00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00 +48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65 +20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04 +00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70 +61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42 +6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50 +2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30 +34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20 +53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53 +75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76 +65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37 +39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F +6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38 +10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73 +74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61 +62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E +20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72 +6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70 +69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32 +34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A +61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30 +33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66 +20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31 +37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20 +53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36 +36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72 +20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C +69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00 +00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20 +47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00 +43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43 +5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68 +69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31 +2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B +20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67 +73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04 +00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69 +6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E +67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74 +65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F +00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61 +6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E +61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F +6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61 +6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43 +61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37 +20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65 +74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D +37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72 +65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20 +22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20 +52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18 +00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61 +6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D +37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50 +61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00 +31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E +65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31 +23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20 +59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69 +6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00 +00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04 +00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F +72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32 +37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75 +74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D +6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72 +63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72 +74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65 +72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48 +20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32 +0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67 +04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73 +74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42 +6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20 +42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30 +6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33 +1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65 +72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F +6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69 +61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00 +00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65 +6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35 +30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20 +52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38 +35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50 +72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69 +6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72 +76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72 +74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65 +74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20 +4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C +00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00 +00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75 +6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C +79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F +75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20 +45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65 +31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20 +6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C +20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43 +75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20 +61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F +61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53 +6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20 +43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24 +00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65 +72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72 +61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00 +53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00 +48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61 +20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73 +76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54 +72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00 +00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20 +39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D +62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63 +68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61 +72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41 +6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74 +69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00 +00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44 +20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37 +31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63 +65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00 +00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53 +65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00 +36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C +61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D +6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00 +38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42 +6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D +36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79 +69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65 +6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37 +35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72 +6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D +6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61 +74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34 +43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00 +36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46 +34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00 +38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69 +6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F +62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20 +43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69 +72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69 +6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30 +35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F +64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36 +30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20 +4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36 +33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00 +00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20 +43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68 +6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00 +53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D +32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69 +67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39 +12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20 +54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15 +00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65 +65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A +00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43 +68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38 +35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72 +69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00 +00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73 +20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35 +2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75 +6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35 +2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63 +68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32 +04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00 +00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00 +4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54 +31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77 +6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F +73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58 +2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69 +6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33 +33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20 +54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27 +00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69 +65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72 +70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73 +69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00 +00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73 +74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00 +44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61 +70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07 +00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79 +6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74 +69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61 +72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41 +64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38 +37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53 +74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74 +69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65 +72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03 +00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00 +56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69 +6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39 +20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68 +65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D +31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31 +2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47 +75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72 +69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20 +43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68 +65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00 +00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00 +77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64 +20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72 +65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49 +43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B +2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D +69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34 +0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00 +46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61 +6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62 +61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43 +6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75 +67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53 +74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E +20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C +69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50 +6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74 +20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00 +44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79 +72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20 +46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36 +39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D +30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E +53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00 +36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20 +48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00 +36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00 +43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32 +34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65 +20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61 +69 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2 new file mode 100755 index 0000000000..88697cddfd --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2 @@ -0,0 +1,515 @@ + FC 00 1F 20 B2 6B 02 00 81 14 00 00 18 00 00 + 46 61 63 2E 20 43 61 73 75 61 6C 74 79 20 4D 61 + 6E 61 67 65 72 20 47 43 04 00 00 35 33 36 39 17 + 00 00 44 69 73 74 72 69 62 75 74 69 6F 6E 20 43 + 6F 6E 73 75 6C 74 61 6E 74 04 00 00 35 33 37 39 + 11 00 00 47 72 6C 2E 20 57 6F 72 6B 73 74 61 74 + 69 6F 6E 73 04 00 00 35 33 38 32 04 00 00 35 33 + 38 37 04 00 00 35 33 38 38 13 00 00 47 72 6C 2E + 20 47 72 6F 75 70 20 41 63 63 6F 75 6E 74 73 04 + 00 00 35 34 33 34 04 00 00 35 34 33 35 0C 00 00 + 54 4C 20 54 65 6C 65 6D 61 74 69 6B 04 00 00 35 + 34 33 37 04 00 00 35 34 34 33 14 00 00 42 75 66 + 66 65 74 6D 69 74 61 72 62 65 69 74 65 72 2F 69 + 6E 04 00 00 35 34 34 36 04 00 00 35 34 36 32 12 + 00 00 54 65 61 6D 6C 65 61 64 65 72 20 4C 69 62 + 72 61 72 79 04 00 00 35 34 36 35 04 00 00 35 34 + 36 37 04 00 00 35 34 36 39 11 00 00 4C 65 69 74 + 65 72 20 46 61 68 72 64 69 65 6E 73 74 04 00 00 + 35 34 38 37 04 00 00 35 34 39 32 04 00 00 35 34 + 39 33 03 00 00 41 55 44 04 00 00 35 35 30 36 04 + 00 00 35 35 30 39 19 00 00 48 65 61 64 20 6F 66 + 20 41 70 70 6C 2E 20 44 65 76 65 6C 6F 70 6D 65 + 6E 74 04 00 00 35 35 31 31 04 00 00 35 35 31 33 + 04 00 00 35 35 33 32 04 00 00 35 35 33 37 04 00 + 00 35 35 35 34 04 00 00 35 35 35 35 16 00 00 54 + 65 61 6D 6C 65 69 74 65 72 69 6E 20 43 61 66 65 + 74 65 72 69 61 04 00 00 35 35 35 37 14 00 00 50 + 72 6F 6A 65 6B 74 6D 69 74 61 72 62 65 69 74 65 + 72 69 6E 04 00 00 35 35 36 33 04 00 00 35 35 37 + 39 04 00 00 35 35 38 39 15 00 00 45 78 70 65 72 + 74 65 20 54 72 6F 70 2E 20 5A 79 6B 6C 6F 6E 65 + 04 00 00 35 35 39 38 11 00 00 45 69 6E 6B 61 75 + 66 73 61 73 73 69 73 74 65 6E 74 04 00 00 35 36 + 30 36 04 00 00 35 36 33 38 04 00 00 35 36 34 32 + 04 00 00 35 36 36 33 04 00 00 35 36 36 34 13 00 + 00 48 65 61 64 20 6F 66 20 4C 41 2F 4C 45 2F 4C + 4E 20 4F 50 04 00 00 35 36 37 35 04 00 00 35 36 + 37 39 04 00 00 35 36 38 30 04 00 00 35 36 38 32 + 04 00 00 35 36 38 38 0A 00 00 54 65 61 6D 6C 65 + 61 64 65 72 03 00 00 47 42 50 04 00 00 35 36 39 + 33 04 00 00 35 36 39 35 04 00 00 35 36 39 36 04 + 00 00 35 36 39 38 09 00 00 53 75 70 70 6F 72 74 + 65 72 04 00 00 35 36 39 39 04 00 00 35 37 30 36 + 13 00 00 48 65 61 64 20 6F 66 20 4C 41 2F 4C 45 + 2F 4C 4E 20 48 52 04 00 00 35 37 30 37 13 00 00 + 4B 6E 6F 77 6C 65 64 67 65 20 4E 65 74 77 6F 72 + 6B 65 72 04 00 00 35 37 30 38 0E 00 00 52 69 73 + 69 6B 6F 65 78 70 65 72 74 69 6E 04 00 00 35 37 + 31 30 04 00 00 35 37 31 39 04 00 00 35 37 32 33 + 18 00 00 47 72 6C 2E 20 43 65 6E 74 72 2E 20 4F + 70 65 72 2E 20 53 79 73 74 65 6D 04 00 00 35 37 + 33 31 04 00 00 35 37 33 34 18 00 00 48 65 61 64 + 20 4D 65 64 69 61 4E 65 74 77 2E 61 74 20 52 FC + 73 63 68 2E 04 00 00 35 37 33 38 04 00 00 35 37 + 35 31 04 00 00 35 37 35 39 04 00 00 35 37 36 30 + 04 00 00 35 37 36 35 04 00 00 35 37 36 36 02 00 + 00 42 4D 08 00 00 48 61 6D 69 6C 74 6F 6E 04 00 + 00 35 37 37 35 04 00 00 35 37 37 36 04 00 00 35 + 37 38 31 04 00 00 35 37 38 35 14 00 00 55 6E 64 + 65 72 77 72 69 74 69 6E 67 20 53 75 70 70 6F 72 + 74 04 00 00 35 37 38 37 16 00 00 54 65 61 6D 6C + 65 69 74 65 72 20 65 78 74 2E 20 4B 75 72 69 65 + 72 04 00 00 35 37 39 31 04 00 00 35 38 31 31 04 + 00 00 35 38 32 30 04 00 00 35 38 32 32 04 00 00 + 35 38 33 32 04 00 00 35 38 35 30 14 00 00 50 72 + 6F 6A 65 6B 74 6C 65 69 74 65 72 20 50 20 2B 20 + 45 52 04 00 00 35 38 35 31 04 00 00 35 38 35 37 + 04 00 00 35 38 35 38 04 00 00 35 38 38 30 19 00 + 00 48 65 61 64 20 43 6F 72 70 2E 4C 65 61 72 6E + 2E 61 74 20 52 FC 73 63 68 2E 04 00 00 35 38 38 + 31 04 00 00 35 38 38 35 0E 00 00 4C 65 69 74 65 + 72 20 48 52 20 53 52 47 53 04 00 00 35 38 39 33 + 02 00 00 42 45 04 00 00 35 38 39 36 04 00 00 35 + 39 30 30 15 00 00 48 65 61 64 20 6F 66 20 44 69 + 76 69 73 69 6F 6E 61 6C 20 49 54 04 00 00 35 39 + 31 34 14 00 00 43 6F 6D 70 65 6E 73 61 74 69 6F + 6E 20 4D 61 6E 61 67 65 72 04 00 00 35 39 31 35 + 04 00 00 35 39 31 39 04 00 00 35 39 32 30 03 00 + 00 4E 5A 44 04 00 00 35 39 32 33 04 00 00 35 39 + 33 34 04 00 00 35 39 33 37 04 00 00 35 39 34 32 + 04 00 00 35 39 34 33 12 00 00 53 65 72 76 69 63 + 65 2D 53 70 65 7A 69 61 6C 69 73 74 04 00 00 35 + 39 34 38 04 00 00 35 39 35 32 04 00 00 35 39 35 + 36 04 00 00 35 39 35 37 04 00 00 35 39 35 38 17 + 00 00 47 72 6C 2E 20 53 74 6F 72 61 67 65 20 4D + 61 6E 61 67 65 6D 65 6E 74 04 00 00 35 39 36 34 + 02 00 00 42 41 04 00 00 35 39 36 35 04 00 00 35 + 39 37 35 04 00 00 35 39 37 36 04 00 00 35 39 37 + 39 0F 00 00 52 65 63 68 74 73 6B 6F 6E 73 75 6C + 65 6E 74 04 00 00 35 39 38 31 16 00 00 45 6E 67 + 6C 69 73 63 68 2D 55 65 62 65 72 73 65 74 7A 65 + 72 69 6E 04 00 00 35 39 39 34 18 00 00 48 65 61 + 64 20 47 50 4D 20 4D 61 72 69 6E 65 2F 41 76 69 + 61 74 69 6F 6E 04 00 00 36 30 30 32 0D 00 00 4B + 65 6C 6C 65 72 6D 65 69 73 74 65 72 04 00 00 36 + 30 30 34 04 00 00 36 30 31 33 19 00 00 44 6F 63 + 75 6D 65 6E 74 20 4D 67 6D 74 2E 20 43 6F 6E 73 + 75 6C 74 61 6E 74 04 00 00 36 30 31 35 04 00 00 + 36 30 32 30 04 00 00 36 30 32 36 04 00 00 36 30 + 33 30 02 00 00 52 36 04 00 00 36 30 33 31 17 00 + 00 48 61 75 73 77 69 72 74 73 63 68 61 66 74 73 + 6C 65 69 74 65 72 69 6E 04 00 00 36 30 33 33 04 + 00 00 36 30 35 33 0A 00 00 46 61 68 72 64 69 65 + 6E 73 74 04 00 00 36 30 35 37 04 00 00 36 30 36 + 39 17 00 00 47 72 75 70 70 65 6E 6C 65 69 74 65 + 72 69 6E 20 53 75 70 70 6F 72 74 04 00 00 36 30 + 38 38 19 00 00 49 74 61 6C 69 65 6E 69 73 63 68 + 2D 55 65 62 65 72 73 65 74 7A 65 72 69 6E 02 00 + 00 48 4B 04 00 00 36 30 39 31 04 00 00 36 31 31 + 32 04 00 00 36 31 31 37 04 00 00 36 31 32 31 10 + 00 00 54 65 61 6D 6C 65 69 74 65 72 20 50 4D 2F + 46 4D 04 00 00 36 31 32 37 04 00 00 36 31 33 34 + 04 00 00 36 31 34 36 0B 00 00 54 65 6C 65 6D 61 + 74 69 6B 65 72 04 00 00 36 31 35 36 19 00 00 44 + 69 76 2E 20 46 69 6E 61 6E 63 69 61 6C 20 43 6F + 6E 74 72 6F 6C 6C 65 72 04 00 00 36 31 35 38 0B + 00 00 55 53 4D 20 4D 6F 6E 74 65 75 72 04 00 00 + 36 31 36 32 0A 00 00 49 54 2D 41 75 64 69 74 6F + 72 04 00 00 36 31 36 34 04 00 00 36 31 36 35 04 + 00 00 36 31 36 37 04 00 00 36 31 36 38 04 00 00 + 36 31 37 30 04 00 00 36 31 37 32 17 00 00 4C 65 + 69 74 65 72 20 47 61 73 74 72 6F 6E 6F 6D 69 65 + 62 65 74 72 2E 04 00 00 36 31 38 38 02 00 00 54 + 58 04 00 00 36 31 38 39 16 00 00 50 72 6F 64 75 + 63 74 20 54 61 78 20 53 70 65 63 69 61 6C 69 73 + 74 04 00 00 36 31 39 36 0A 00 00 43 46 4F 20 4F + 66 66 69 63 65 02 00 00 53 50 04 00 00 36 32 30 + 33 14 00 00 41 73 73 69 73 74 65 6E 74 69 6E 20 + 55 2E 20 42 72 65 6D 69 04 00 00 36 32 30 37 04 + 00 00 36 32 31 31 10 00 00 47 72 6F 75 70 20 41 + 63 63 6F 75 6E 74 61 6E 74 04 00 00 36 32 31 35 + 19 00 00 4C 65 69 74 65 72 20 54 65 6C 65 63 6F + 6D 6D 75 6E 69 63 61 74 69 6F 6E 73 04 00 00 36 + 32 32 35 04 00 00 36 32 33 32 04 00 00 36 32 35 + 30 06 00 00 4D 6F 73 63 6F 77 04 00 00 36 32 35 + 35 04 00 00 36 32 36 31 04 00 00 36 32 36 35 04 + 00 00 36 32 36 37 12 00 00 41 62 74 65 69 6C 75 + 6E 67 73 6C 65 69 74 65 72 69 6E 04 00 00 36 32 + 36 38 0F 00 00 53 70 6F 72 74 61 6E 6C 61 67 65 + 77 61 72 74 04 00 00 36 32 37 31 04 00 00 36 32 + 37 32 15 00 00 50 75 62 6C 69 73 68 69 6E 67 20 + 43 6F 6E 73 75 6C 74 61 6E 74 04 00 00 36 32 37 + 39 04 00 00 36 32 38 30 15 00 00 53 61 63 68 62 + 65 61 72 62 2E 20 4B 61 73 73 65 20 53 6F 6F 64 + 04 00 00 36 33 32 34 12 00 00 50 72 6F 64 75 63 + 74 20 53 70 65 63 69 61 6C 69 73 74 04 00 00 36 + 33 33 39 04 00 00 36 33 34 34 0F 00 00 50 72 6F + 67 72 61 6D 20 4D 61 6E 61 67 65 72 04 00 00 36 + 33 34 36 04 00 00 36 33 34 37 12 00 00 45 6E 67 + 6C 69 73 63 68 FC 62 65 72 73 65 74 7A 65 72 04 + 00 00 36 33 34 39 19 00 00 53 65 63 74 69 6F 6E + 20 48 65 61 64 20 43 6F 6E 74 72 2E 20 50 72 6F + 6A 2E 04 00 00 36 33 35 30 10 00 00 52 65 73 65 + 61 72 63 68 20 4D 61 6E 61 67 65 72 04 00 00 36 + 33 36 38 0C 00 00 44 61 74 61 20 4D 61 6E 61 67 + 65 72 04 00 00 36 33 36 39 04 00 00 36 33 37 32 + 19 00 00 42 65 74 72 69 65 62 73 74 65 63 68 6E + 69 6B 65 72 20 45 6C 65 6B 74 72 6F 04 00 00 36 + 33 37 34 04 00 00 36 33 37 35 04 00 00 36 33 39 + 39 11 00 00 44 65 73 69 67 6E 20 43 6F 6E 73 75 + 6C 74 61 6E 74 04 00 00 36 34 30 30 04 00 00 36 + 34 30 32 04 00 00 36 34 30 34 13 00 00 41 63 74 + 75 61 72 69 61 6C 20 41 73 73 69 73 74 61 6E 74 + 04 00 00 36 34 30 35 04 00 00 36 34 30 36 04 00 + 00 36 34 30 37 04 00 00 36 34 30 38 04 00 00 36 + 34 31 32 04 00 00 36 34 31 33 04 00 00 36 34 31 + 34 04 00 00 36 34 32 33 04 00 00 36 34 32 34 13 + 00 00 57 65 62 20 50 72 6F 6A 65 63 74 20 4D 61 + 6E 61 67 65 72 04 00 00 36 34 32 38 04 00 00 36 + 34 34 32 04 00 00 36 34 35 33 19 00 00 53 61 63 + 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 43 61 + 73 75 61 6C 74 79 04 00 00 36 34 36 32 15 00 00 + 48 65 61 64 20 6F 66 20 42 61 6C 61 6E 63 65 20 + 53 68 65 65 74 04 00 00 36 34 37 33 10 00 00 41 + 63 63 6F 75 6E 74 20 4D 67 72 20 55 53 4C 4C 04 + 00 00 36 34 37 34 18 00 00 48 65 61 64 20 6F 66 + 20 45 61 72 74 68 71 75 61 6B 65 20 47 72 6F 75 + 70 04 00 00 36 34 37 36 04 00 00 36 34 38 30 0C + 00 00 4C 65 69 74 65 72 69 6E 20 47 4E 53 04 00 + 00 36 34 38 36 17 00 00 4B 6F 6D 6D 75 6E 69 6B + 61 74 69 6F 6E 73 62 65 72 61 74 65 72 69 6E 04 + 00 00 36 34 39 33 0E 00 00 46 26 42 20 4B 6F 6E + 74 72 6F 6C 6C 65 72 04 00 00 36 34 39 36 16 00 + 00 4C 65 69 74 65 72 69 6E 20 43 61 66 65 74 65 + 72 69 61 20 42 36 36 04 00 00 36 34 39 38 09 00 + 00 41 73 73 69 73 74 61 6E 74 04 00 00 36 35 30 + 30 04 00 00 36 35 30 38 04 00 00 36 35 30 39 04 + 00 00 36 35 31 30 04 00 00 36 35 32 33 04 00 00 + 36 35 33 31 14 00 00 53 74 76 2E 20 43 68 65 66 + 20 64 65 20 53 65 72 76 69 63 65 04 00 00 36 35 + 33 32 04 00 00 36 35 33 33 04 00 00 36 35 33 35 + 12 00 00 42 65 74 72 69 65 62 73 61 6C 6C 72 6F + 75 6E 64 65 72 04 00 00 36 35 34 32 14 00 00 45 + 6C 65 63 74 72 6F 6E 69 63 20 50 75 62 6C 69 73 + 68 65 72 04 00 00 36 35 35 32 18 00 00 54 72 65 + 61 74 79 20 55 57 20 50 72 6F 70 2E 2F 43 61 73 + 75 61 6C 74 79 04 00 00 36 35 35 37 04 00 00 36 + 35 36 33 13 00 00 54 65 61 6D 6C 65 69 74 65 72 + 20 4D 61 74 65 72 69 61 6C 04 00 00 36 35 36 36 + 04 00 00 36 35 37 38 10 00 00 53 74 72 61 74 65 + 67 79 20 41 6E 61 6C 79 73 74 02 00 00 46 47 04 + 00 00 36 35 37 39 18 00 00 48 65 61 64 20 6F 66 + 20 50 72 6F 63 65 73 73 20 50 6C 61 6E 26 4D 67 + 74 04 00 00 36 36 31 33 16 00 00 49 6E 74 65 72 + 6E 61 74 69 6F 6E 61 6C 20 41 73 73 69 67 6E 65 + 65 04 00 00 36 36 32 31 04 00 00 36 36 32 36 04 + 00 00 36 36 32 37 0D 00 00 45 76 65 6E 74 20 4D + 61 6E 61 67 65 72 04 00 00 36 36 32 39 04 00 00 + 36 36 33 32 04 00 00 36 36 33 37 15 00 00 44 65 + 70 75 74 79 20 48 65 61 64 20 6F 66 20 45 76 65 + 6E 74 73 04 00 00 36 36 33 39 19 00 00 48 65 61 + 64 20 6F 66 20 43 65 6E 74 72 65 20 52 FC 73 63 + 68 6C 69 6B 6F 6E 04 00 00 36 36 34 34 11 00 00 + 53 65 6E 69 6F 72 20 43 6F 6E 74 72 6F 6C 6C 65 + 72 02 00 00 43 4D 04 00 00 36 36 34 38 12 00 00 + 47 6C 6F 62 61 6C 20 49 47 50 20 4D 61 6E 61 67 + 65 72 04 00 00 36 36 35 33 17 00 00 4C 65 69 74 + 65 72 20 4C 6F 74 75 73 20 4E 6F 74 65 73 20 47 + 4E 4E 4F 04 00 00 36 36 35 37 04 00 00 36 36 36 + 31 16 00 00 50 72 6F 6A 65 63 74 20 4D 61 6E 61 + 67 65 72 20 4D 61 67 6E 75 6D 04 00 00 36 36 36 + 37 04 00 00 36 36 37 35 04 00 00 36 36 38 33 04 + 00 00 36 36 38 35 17 00 00 4F 72 67 61 6E 69 73 + 61 74 69 6F 6E 73 2D 41 73 73 69 73 74 65 6E 74 + 04 00 00 36 36 38 36 04 00 00 36 36 39 32 14 00 + 00 50 65 72 73 6F 6E 61 6C 65 6E 74 77 69 63 6B + 6C 65 72 69 6E 04 00 00 36 36 39 33 04 00 00 36 + 36 39 34 19 00 00 53 61 63 68 62 2E 45 69 6E 6B + 61 75 66 2F 42 75 63 68 68 61 6C 74 75 6E 67 04 + 00 00 36 36 39 37 16 00 00 47 72 6C 2E 20 44 42 + 20 41 64 6D 69 6E 69 73 74 72 61 74 69 6F 6E 04 + 00 00 36 37 30 31 04 00 00 36 37 30 32 04 00 00 + 36 37 30 36 04 00 00 36 37 31 34 04 00 00 36 37 + 32 31 04 00 00 36 37 33 31 04 00 00 36 37 33 33 + 04 00 00 36 37 33 34 04 00 00 36 37 34 33 04 00 + 00 36 37 34 35 0A 00 00 50 52 2D 42 65 72 61 74 + 65 72 04 00 00 36 37 34 36 04 00 00 36 37 34 38 + 04 00 00 36 37 35 31 17 00 00 53 70 65 63 69 61 + 6C 69 73 74 20 52 65 74 72 6F 2F 43 52 45 53 54 + 41 04 00 00 36 37 35 33 17 00 00 53 65 6E 69 6F + 72 20 43 6F 72 70 2E 20 41 63 63 6F 75 6E 74 61 + 6E 74 04 00 00 36 37 35 38 04 00 00 36 37 36 33 + 18 00 00 5A 65 69 74 73 63 68 72 69 66 74 65 6E + 76 65 72 77 61 6C 74 65 72 69 6E 01 00 00 43 04 + 00 00 36 37 36 36 04 00 00 36 37 36 38 14 00 00 + 43 6F 6D 70 65 6E 73 61 74 69 6F 6E 20 53 75 70 + 70 6F 72 74 04 00 00 36 37 37 30 0A 00 00 54 65 + 61 6D 6C 65 69 74 65 72 04 00 00 36 37 37 32 16 + 00 00 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 53 70 + 65 63 69 61 6C 69 73 74 04 00 00 36 37 37 33 15 + 00 00 48 65 61 64 20 6F 66 20 53 79 73 74 65 6D + 73 20 47 72 6F 75 70 04 00 00 36 37 37 34 04 00 + 00 36 37 37 35 04 00 00 36 37 38 32 15 00 00 46 + 61 63 68 72 65 66 65 72 65 6E 74 69 6E 20 55 6D + 77 65 6C 74 04 00 00 36 37 38 34 02 00 00 52 53 + 04 00 00 36 37 38 36 02 00 00 4B 52 05 00 00 53 + 65 6F 75 6C 04 00 00 36 37 38 38 04 00 00 36 37 + 39 38 0F 00 00 43 68 65 66 20 64 65 20 53 65 72 + 76 69 63 65 04 00 00 36 38 30 38 04 00 00 36 38 + 31 30 18 00 00 48 65 61 64 20 6F 66 20 52 69 73 + 6B 20 43 6F 6E 74 72 6F 6C 6C 69 6E 67 04 00 00 + 36 38 32 36 0F 00 00 53 74 65 75 65 72 6B 6F 6E + 73 75 6C 65 6E 74 04 00 00 36 38 32 38 15 00 00 + 54 65 61 6D 6C 65 69 74 65 72 20 50 E2 74 69 73 + 73 65 72 69 65 04 00 00 36 38 33 31 0B 00 00 53 + 65 6B 72 65 74 61 72 69 61 74 04 00 00 36 38 35 + 30 04 00 00 36 38 35 32 04 00 00 36 38 35 35 04 + 00 00 36 38 36 36 04 00 00 36 38 37 35 04 00 00 + 36 38 37 36 04 00 00 36 38 37 37 04 00 00 44 61 + 74 65 04 00 00 44 65 70 74 04 00 00 43 69 74 79 + 04 00 00 55 6E 69 74 07 00 00 53 75 62 55 6E 69 + 74 03 00 00 49 44 32 05 00 00 50 68 6F 6E 65 04 + 00 00 4E 61 6D 65 09 00 00 46 69 72 73 74 4E 61 + 6D 65 06 00 00 4F 6C 64 4A 6F 62 08 00 00 4A 6F + 62 44 65 73 63 72 06 00 00 53 74 61 74 75 73 05 + 00 00 53 74 61 74 33 05 00 00 53 74 61 74 34 06 + 00 00 44 65 67 72 65 65 08 00 00 50 6F 73 69 74 + 69 6F 6E 08 00 00 45 78 70 65 6E 73 65 73 09 00 + 00 45 78 70 65 6E 73 65 73 32 09 00 00 45 78 70 + 65 6E 73 65 73 34 09 00 00 45 78 70 65 6E 73 65 + 73 33 09 00 00 45 78 70 65 6E 73 65 73 35 09 00 + 00 45 78 70 65 6E 73 65 73 36 09 00 00 45 78 70 + 65 6E 73 65 73 37 05 00 00 4C 65 76 65 6C 06 00 + 00 52 65 70 6F 72 74 05 00 00 47 72 6F 75 70 04 + 00 00 50 6F 6F 6C 05 00 00 44 4B 65 79 50 05 00 + 00 44 4D 44 50 4D 08 00 00 42 65 6E 67 61 6C 69 + 78 07 00 00 54 65 6E 61 6C 69 78 0B 00 00 33 32 + 34 2D 54 65 6E 61 6C 69 78 06 00 00 48 61 6E 6E + 69 78 05 00 00 31 30 39 33 30 04 00 00 32 38 39 + 37 04 00 00 38 39 31 37 04 00 00 33 31 35 33 04 + 00 00 38 37 33 36 04 00 00 34 33 32 33 05 00 00 + 31 31 35 37 35 04 00 00 37 31 35 34 04 00 00 33 + 38 35 38 04 00 00 33 32 35 34 04 00 00 39 37 30 + 39 04 00 00 37 33 36 39 04 00 00 34 31 39 35 04 + 00 00 39 37 30 37 04 00 00 36 38 31 37 04 00 00 + 35 35 34 34 08 00 00 53 61 6E 74 69 61 67 6F 04 + 00 00 34 32 30 33 05 00 00 31 30 38 34 37 05 00 + 00 31 31 36 35 36 05 00 00 31 33 30 31 34 04 00 + 00 31 39 30 36 04 00 00 35 35 39 34 04 00 00 35 + 32 32 31 04 00 00 38 36 38 31 04 00 00 38 31 37 + 38 04 00 00 36 31 38 30 05 00 00 31 31 32 39 39 + 04 00 00 39 33 33 33 05 00 00 31 32 33 31 35 05 + 00 00 31 31 30 34 35 05 00 00 31 32 32 32 37 01 + 00 00 49 04 00 00 33 36 39 31 04 00 00 37 30 33 + 34 04 00 00 32 31 30 37 04 00 00 35 32 30 35 04 + 00 00 36 30 35 35 04 00 00 34 36 30 30 04 00 00 + 36 38 39 39 04 00 00 36 39 30 35 05 00 00 31 32 + 31 34 30 04 00 00 37 36 35 35 05 00 00 38 30 30 + 39 37 04 00 00 34 32 37 32 05 00 00 31 30 38 37 + 36 04 00 00 37 33 38 35 04 00 00 34 31 30 31 04 + 00 00 38 32 32 35 04 00 00 32 34 37 31 04 00 00 + 35 31 37 35 04 00 00 38 36 34 31 05 00 00 31 32 + 33 32 31 05 00 00 31 32 38 39 32 04 00 00 37 36 + 38 37 04 00 00 37 32 37 37 04 00 00 37 31 34 37 + 05 00 00 31 30 32 39 34 04 00 00 35 31 31 37 05 + 00 00 31 30 30 30 32 04 00 00 37 37 38 30 04 00 + 00 36 34 38 32 05 00 00 38 30 32 35 30 08 00 00 + 41 63 74 75 61 72 79 2C 05 00 00 31 31 37 39 35 + 05 00 00 31 31 37 32 31 05 00 00 31 31 39 38 32 + 05 00 00 31 33 30 33 31 04 00 00 38 32 33 32 04 + 00 00 35 34 36 38 04 00 00 39 33 33 37 04 00 00 + 36 38 37 38 05 00 00 31 31 39 36 36 04 00 00 37 + 37 34 34 05 00 00 31 31 30 37 36 05 00 00 31 32 + 39 31 32 04 00 00 37 39 35 33 05 00 00 31 32 32 + 36 35 04 00 00 36 35 36 34 04 00 00 38 32 33 36 + 04 00 00 37 30 33 38 04 00 00 33 36 33 33 04 00 + 00 38 36 34 32 04 00 00 35 34 38 36 04 00 00 33 + 39 37 39 04 00 00 35 39 32 37 04 00 00 35 34 31 + 35 05 00 00 31 32 31 35 34 03 00 00 35 36 35 13 + 00 00 4C 61 74 69 6E 20 41 6D 65 72 69 63 61 20 + 53 6F 75 74 68 0E 00 00 43 6F 6C 6F 6D 62 69 61 + 20 26 20 4F 53 41 02 00 00 35 35 11 00 00 50 72 + 6F 64 75 63 74 20 45 78 65 63 75 74 69 76 65 02 + 00 00 53 48 02 00 00 4C 59 02 00 00 34 36 0F 00 + 00 48 65 61 64 20 4C 41 20 41 63 61 64 65 6D 79 + 07 00 00 54 72 61 69 6E 65 72 02 00 00 53 45 02 + 00 00 50 50 03 00 00 50 4C 4E 02 00 00 34 32 11 + 00 00 54 72 65 61 74 79 20 53 70 65 63 69 61 6C + 69 73 74 04 00 00 31 31 31 35 13 00 00 55 6E 64 + 65 72 77 72 69 74 69 6E 67 20 54 72 65 61 74 79 + 02 00 00 53 41 02 00 00 4D 45 04 00 00 31 35 33 + 30 04 00 00 31 35 35 37 14 00 00 52 65 6C 61 74 + 69 6F 6E 73 68 69 70 20 4D 61 6E 61 67 65 72 04 + 00 00 31 35 37 36 04 00 00 31 38 32 31 0F 00 00 + 48 65 61 64 20 43 6F 72 70 6F 72 61 74 65 73 0A + 00 00 41 63 63 6F 75 6E 74 69 6E 67 04 00 00 32 + 30 34 39 14 00 00 50 6C 61 6E 6E 69 6E 67 20 43 + 6F 6F 72 64 69 6E 61 74 6F 72 02 00 00 54 44 04 + 00 00 32 31 35 30 0F 00 00 48 65 61 64 20 43 4F + 43 20 4D 61 72 69 6E 65 04 00 00 32 31 35 36 10 + 00 00 4D 61 72 6B 65 74 20 45 78 65 63 75 74 69 + 76 65 04 00 00 32 35 37 32 18 00 00 48 65 61 64 + 20 6F 66 20 46 61 63 75 6C 74 61 74 69 76 65 20 + 44 65 73 6B 0C 00 00 41 64 52 20 43 61 73 75 61 + 6C 74 79 04 00 00 32 38 34 32 0C 00 00 55 57 20 + 54 72 65 61 74 79 20 45 4E 02 00 00 53 4B 04 00 + 00 33 30 38 32 18 00 00 44 69 76 69 73 69 6F 6E + 61 6C 20 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E + 02 00 00 50 43 04 00 00 33 30 38 30 19 00 00 48 + 65 61 64 20 43 65 6E 74 65 72 20 6F 66 20 43 6F + 6D 70 2E 20 50 72 6F 70 0E 00 00 4C 6F 63 61 6C + 20 53 65 72 76 69 63 65 73 19 00 00 43 6C 69 65 + 6E 74 20 4D 61 6E 61 67 65 72 20 43 6F 72 70 6F + 72 61 74 65 73 04 00 00 33 34 30 39 18 00 00 55 + 6E 64 65 72 77 72 69 74 69 6E 67 20 45 6E 67 69 + 6E 65 65 72 69 6E 67 04 00 00 33 34 36 32 17 00 + 00 48 65 61 64 20 6F 66 20 42 55 53 20 50 72 6F + 6A 65 63 74 73 20 5A 48 04 00 00 33 34 33 34 19 + 00 00 48 65 61 64 20 43 65 6E 74 65 72 20 6F 66 + 20 43 6F 6D 70 2E 20 43 61 73 2E 04 00 00 33 37 + 38 31 18 00 00 48 65 61 64 20 4D 61 72 6B 65 74 + 69 6E 67 20 26 20 52 65 6C 2E 20 5A 48 04 00 00 + 33 39 32 31 11 00 00 41 63 63 6F 75 6E 74 20 45 + 78 65 63 75 74 69 76 65 04 00 00 33 39 37 31 04 + 00 00 34 31 31 31 04 00 00 34 31 36 33 13 00 00 + 52 65 6C 61 74 69 6F 6E 20 4D 61 6E 61 67 65 72 + 20 55 53 04 00 00 34 30 38 33 0B 00 00 55 57 20 + 50 72 6F 70 65 72 74 79 04 00 00 34 33 34 30 04 + 00 00 34 34 37 38 16 00 00 43 65 6E 74 65 72 20 + 6F 66 20 43 6F 6D 70 2E 20 4D 61 72 69 6E 65 04 + 00 00 34 35 37 38 15 00 00 55 57 20 53 75 70 70 + 6F 72 74 20 43 6F 72 70 6F 72 61 74 65 73 04 00 + 00 34 35 38 31 18 00 00 43 65 6E 74 65 72 20 6F + 66 20 43 6F 6D 70 2E 20 43 61 73 75 61 6C 74 79 + 04 00 00 34 39 33 37 14 00 00 41 73 73 69 73 74 + 61 6E 74 20 43 6F 72 70 6F 72 61 74 65 73 0C 00 + 00 43 6F 75 6E 74 72 79 20 48 65 61 64 04 00 00 + 35 33 31 36 17 00 00 48 65 61 64 20 43 65 6E 74 + 65 72 20 6F 66 20 43 6F 6D 70 2E 20 45 4E 04 00 + 00 35 33 39 35 16 00 00 41 73 73 2E 20 50 72 6F + 64 75 63 74 20 45 78 65 63 75 74 69 76 65 04 00 + 00 35 36 31 39 12 00 00 50 72 6F 6A 65 63 74 20 + 4C 65 61 64 65 72 20 42 55 53 04 00 00 35 35 37 + 31 18 00 00 43 65 6E 74 65 72 20 6F 66 20 43 6F + 6D 70 2E 20 50 72 6F 70 65 72 74 79 04 00 00 35 + 36 33 33 17 00 00 48 65 61 64 20 4D 61 6E 61 67 + 65 6D 65 6E 74 20 53 75 70 70 6F 72 74 04 00 00 + 35 37 35 32 10 00 00 48 65 61 64 20 54 72 65 61 + 74 79 20 44 65 73 6B 04 00 00 35 36 39 31 19 00 + 00 44 65 70 2E 48 65 61 64 20 43 65 6E 74 65 72 + 20 43 6F 6D 70 2E 43 61 73 2E 04 00 00 35 38 36 + 34 04 00 00 35 39 32 34 0F 00 00 50 72 6F 64 75 + 63 74 20 53 75 70 70 6F 72 74 04 00 00 35 39 34 + 30 19 00 00 44 65 70 2E 48 65 61 64 20 43 65 6E + 74 65 72 20 43 6F 6D 70 2E 45 6E 67 2E 04 00 00 + 36 30 31 30 04 00 00 36 30 34 35 18 00 00 48 65 + 61 64 20 43 6F 43 20 53 74 72 75 63 74 2E 20 46 + 69 6E 61 6E 63 65 04 00 00 36 31 34 39 04 00 00 + 36 31 36 36 13 00 00 48 65 61 64 20 6F 66 20 43 + 6F 43 20 61 67 72 6F 20 4C 41 04 00 00 36 33 33 + 31 04 00 00 36 36 32 34 13 00 00 50 72 6F 64 75 + 63 74 20 44 65 76 65 6C 6F 70 6D 65 6E 74 04 00 + 00 36 35 33 37 04 00 00 36 38 30 36 04 00 00 36 + 39 33 38 15 00 00 55 57 20 53 74 72 75 63 74 75 + 72 65 73 20 46 69 6E 61 6E 63 65 04 00 00 37 30 + 37 33 0F 00 00 52 75 6E 2D 4F 66 66 20 41 6C 69 + 61 6E 7A 61 04 00 00 37 30 39 30 15 00 00 4A 75 + 6E 69 6F 72 20 43 6C 69 65 6E 74 20 4D 61 6E 61 + 67 65 72 04 00 00 37 34 33 37 0B 00 00 33 32 34 + 2C 20 42 6F 67 6F 74 61 04 00 00 37 35 32 39 10 + 00 00 53 70 65 63 69 61 6C 20 50 72 6F 6A 65 63 + 74 73 04 00 00 37 36 33 31 16 00 00 4F 70 65 72 + 61 74 69 6F 6E 73 20 4D 61 6E 61 67 65 72 20 44 + 55 4F 04 00 00 38 34 32 33 04 00 00 38 34 36 35 + 04 00 00 38 35 30 36 0F 00 00 54 72 61 69 6E 65 + 72 20 53 69 63 73 2F 6E 74 04 00 00 38 36 30 36 + 04 00 00 38 35 31 30 04 00 00 39 32 30 39 05 00 + 00 31 30 31 38 36 05 00 00 31 30 35 38 33 10 00 + 00 54 72 61 69 6E 69 6E 67 20 4D 61 6E 61 67 65 + 72 05 00 00 31 30 35 38 36 03 00 00 32 38 38 05 + 00 00 31 30 37 34 37 14 00 00 48 65 61 64 20 44 + 69 76 2E 20 49 54 20 55 6E 69 74 20 5A 48 03 00 + 00 49 4C 53 05 00 00 31 30 39 34 34 15 00 00 48 + 65 61 64 20 53 70 65 63 69 61 6C 20 50 72 6F 6A + 65 63 74 73 04 00 00 37 30 37 37 05 00 00 31 30 + 39 38 36 03 00 00 45 45 4B 05 00 00 31 31 32 39 + 37 14 00 00 48 52 20 26 53 65 72 76 69 63 65 73 + 20 4D 61 6E 61 67 65 72 10 00 00 41 64 52 20 41 + 6C 67 6F 64 F3 6E 2F 41 67 72 6F 05 00 00 31 31 + 37 32 37 11 00 00 43 6C 61 69 6D 73 20 44 65 73 + 6B 2F 4C 65 67 61 6C 11 00 00 54 65 63 68 6E 69 + 63 61 6C 20 4D 61 6E 61 67 65 72 03 00 00 32 38 + 39 13 00 00 43 6C 69 65 6E 74 20 54 65 61 6D 20 + 53 75 70 70 6F 72 74 06 00 00 41 64 52 20 58 4C + 05 00 00 31 31 38 37 31 0C 00 00 41 64 52 20 50 + 72 6F 70 65 72 74 79 05 00 00 31 32 36 30 30 06 + 00 00 4D 61 64 72 69 64 07 00 00 31 34 38 36 33 + 39 35 07 00 00 36 35 30 36 33 33 31 06 00 00 42 + 65 6A 69 6E 67 0C 00 00 42 75 65 6E 6F 73 20 41 + 69 72 65 73 07 00 00 43 6F 6C 6F 67 6E 65 08 00 + 00 42 72 75 73 73 65 6C 73 02 00 00 56 45 07 00 + 00 43 61 72 61 63 61 73 02 00 00 50 4C 06 00 00 + 57 61 72 73 61 77 02 00 00 4A 50 05 00 00 54 6F + 6B 79 6F 04 00 00 52 6F 6D 65 05 00 00 31 32 36 + 30 31 19 00 00 48 65 61 64 20 6F 66 20 4C 69 66 + 65 26 48 65 61 6C 74 68 20 49 6E 64 69 61 16 00 + 00 41 73 73 69 73 74 65 6E 74 69 6E 20 4C 65 69 + 74 65 72 20 43 43 43 02 00 00 33 35 10 00 00 41 + 72 63 68 69 76 73 70 65 7A 69 61 6C 69 73 74 02 + 00 00 32 2B 02 00 00 33 2D 02 00 00 34 2D 12 00 + 00 41 72 63 68 69 76 73 70 65 7A 69 61 6C 69 73 + 74 69 6E 02 00 00 33 2B 02 00 00 48 43 0F 00 00 + 4D 69 74 67 6C 69 65 64 20 64 65 72 20 47 4C 13 + 00 00 41 64 76 65 72 74 69 73 69 6E 67 20 4D 61 + 6E 61 67 65 72 02 00 00 32 35 0C 00 00 50 34 30 + 30 20 53 75 70 70 6F 72 74 12 00 00 49 6E 74 65 + 72 6E 61 74 2E 20 54 72 61 6E 73 66 65 72 01 00 + 00 47 19 00 00 44 65 70 2E 43 68 69 65 66 45 78 + 65 63 75 74 69 76 65 4F 66 66 69 63 65 72 10 00 + 00 50 72 E4 73 69 64 65 6E 74 20 64 65 72 20 47 + 4C 0D 00 00 47 72 75 70 70 65 6E 6C 65 69 74 65 + 72 02 00 00 43 59 15 00 00 46 FC 68 72 75 6E 67 + 73 75 6E 74 65 72 73 74 FC 74 7A 75 6E 67 0C 00 + 00 43 49 2D 41 73 73 69 73 74 61 6E 74 06 00 00 + 32 30 30 30 30 39 03 00 00 37 32 30 10 00 00 48 + 65 61 64 20 6F 66 20 47 72 6F 75 70 20 49 41 02 + 00 00 53 54 19 00 00 49 6E 74 65 72 6E 2E 47 72 + 61 64 75 61 74 65 20 50 72 6F 67 2E 4D 67 74 2E + 18 00 00 53 79 73 74 65 6D 76 65 72 61 6E 74 77 + 6F 72 74 6C 2E 20 50 49 4C 41 53 00 00 00 0A 00 + 00 33 35 33 2D 59 54 38 31 33 30 19 00 00 50 72 + 69 63 69 6E 67 20 41 63 74 75 61 72 69 61 6C 20 + 41 6E 61 6C 79 73 74 19 00 00 54 65 63 68 6E 69 + 63 61 6C 20 43 6C 61 69 6D 73 20 43 6F 6E 73 75 + 6C 74 2E 18 00 00 47 72 75 70 70 65 6E 6C 65 69 + 74 65 72 69 6E 20 43 61 73 75 61 6C 74 79 19 00 + 00 41 73 73 69 73 74 61 6E 74 20 47 72 6F 75 70 + 20 50 4D 20 4D 61 72 69 6E 65 0E 00 00 44 65 62 + 74 20 43 6F 6C 6C 65 63 74 6F 72 10 00 00 45 78 + 70 65 72 74 65 20 45 72 64 62 65 62 65 6E 15 00 + 00 47 72 6F 75 70 20 4C 69 61 69 73 6F 6E 20 4F + 66 66 69 63 65 72 15 00 00 48 65 61 64 20 41 75 + 64 69 74 2F 49 6E 73 70 65 63 74 69 6F 6E 18 00 + 00 48 65 61 64 20 6F 66 20 43 6C 61 69 6D 73 20 + 26 20 43 2E 20 4D 67 74 2E 08 00 00 42 65 72 6D + 75 64 61 73 04 00 00 4E 45 49 4E 1C 00 00 53 65 + 63 72 65 74 61 72 79 20 69 6E 20 4E 65 77 20 59 + 6F 72 6B 20 4F 66 66 69 63 65 02 00 00 31 32 01 + 00 00 31 03 00 00 32 32 30 02 00 00 31 30 15 00 + 00 54 65 6C 65 6D 61 74 69 6B 2D 53 75 70 70 6F + 72 74 65 72 69 6E 13 00 00 54 4C 20 54 65 6C 65 + 6D 61 74 69 6B 73 75 70 70 6F 72 74 19 00 00 55 + 53 20 47 41 41 50 2D 50 72 6F 6A 65 6B 74 6C 65 + 69 74 65 72 20 53 52 5A 02 00 00 32 2D 09 00 00 + 41 73 73 69 73 74 65 6E 74 0D 00 00 42 57 20 45 + 78 70 65 72 74 65 20 43 4F 19 00 00 52 61 74 69 + 6E 67 20 41 67 65 6E 63 79 20 43 6F 6F 72 64 69 + 6E 61 74 6F 72 0F 00 00 50 72 6F 6A 65 6B 74 6C + 65 69 74 65 72 69 6E 14 00 00 53 65 6E 69 6F 72 + 20 41 63 63 6F 75 6E 74 61 6E 74 20 51 41 14 00 + 00 53 65 6E 69 6F 72 20 4C 65 67 61 6C 20 41 64 + 76 69 73 65 72 16 00 00 53 65 6E 69 6F 72 20 50 + 72 6F 6A 65 63 74 20 4D 61 6E 61 67 65 72 13 00 + 00 41 73 73 69 73 74 61 6E 74 20 55 57 20 4D 61 + 72 69 6E 65 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1 new file mode 100755 index 0000000000..359e3b4a3f --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1 @@ -0,0 +1,514 @@ + 3C 00 18 20 10 00 00 42 75 73 69 6E + 65 73 73 20 53 75 70 70 6F 72 74 03 00 00 49 45 + 50 15 00 00 43 6F 75 6E 74 72 79 20 48 65 61 64 + 20 43 6F 6C 6F 6D 62 69 61 03 00 00 59 45 53 02 + 00 00 43 31 01 00 00 59 04 00 00 31 2E 30 30 02 + 00 00 43 34 02 00 00 43 35 01 00 00 20 02 00 00 + 43 37 02 00 00 43 38 02 00 00 43 39 03 00 00 43 + 31 30 03 00 00 43 31 31 13 00 00 4D 61 72 69 6E + 65 20 52 69 73 6B 20 41 6E 61 6C 79 73 74 03 00 + 00 43 31 32 03 00 00 43 31 33 03 00 00 43 31 34 + 03 00 00 43 31 35 03 00 00 43 31 36 03 00 00 43 + 31 37 03 00 00 43 31 38 03 00 00 43 32 30 03 00 + 00 43 32 31 03 00 00 43 32 32 03 00 00 43 32 33 + 03 00 00 43 32 34 03 00 00 43 32 35 03 00 00 43 + 32 36 03 00 00 43 32 37 12 00 00 54 65 63 68 6E + 69 63 61 6C 20 44 69 72 65 63 74 6F 72 03 00 00 + 43 32 38 03 00 00 43 32 39 03 00 00 43 33 30 03 + 00 00 43 33 31 09 00 00 35 2F 30 33 2F 31 39 36 + 31 03 00 00 43 33 32 03 00 00 43 33 33 03 00 00 + 43 33 34 03 00 00 43 33 35 03 00 00 43 33 36 03 + 00 00 43 33 37 03 00 00 43 33 38 03 00 00 43 33 + 39 03 00 00 43 34 30 03 00 00 43 34 31 0A 00 00 + 31 30 2E 31 32 2E 31 39 35 31 0A 00 00 31 35 2E + 30 31 2E 31 39 39 36 01 00 00 66 0A 00 00 32 37 + 2E 30 31 2E 31 39 35 33 0A 00 00 30 39 2E 30 35 + 2E 31 39 39 35 01 00 00 6D 0A 00 00 30 36 2E 30 + 34 2E 31 39 36 37 0A 00 00 30 31 2E 30 31 2E 31 + 39 39 39 0A 00 00 31 37 2E 30 38 2E 31 39 35 35 + 0A 00 00 30 31 2E 31 32 2E 31 39 39 35 0A 00 00 + 32 30 2E 30 31 2E 31 39 37 33 0A 00 00 31 35 2E + 30 39 2E 31 39 39 37 0A 00 00 30 34 2E 31 31 2E + 31 39 35 39 0A 00 00 30 38 2E 31 31 2E 31 39 39 + 36 01 00 00 35 0A 00 00 31 35 2E 30 36 2E 31 39 + 37 31 0A 00 00 30 31 2E 30 39 2E 31 39 39 39 0A + 00 00 32 30 2E 30 38 2E 31 39 37 30 0A 00 00 32 + 38 2E 30 38 2E 31 39 39 35 0A 00 00 31 30 2E 30 + 39 2E 31 39 35 35 0A 00 00 30 31 2E 30 38 2E 32 + 30 30 30 0A 00 00 31 38 2E 30 38 2E 31 39 36 35 + 0A 00 00 32 32 2E 30 37 2E 31 39 39 32 0A 00 00 + 32 34 2E 30 39 2E 31 39 35 36 0A 00 00 32 30 2E + 31 30 2E 31 39 39 37 16 00 00 48 52 20 26 20 4C + 6F 67 69 73 74 69 63 73 20 4D 61 6E 61 67 65 72 + 0A 00 00 32 38 2E 30 37 2E 31 39 36 33 0A 00 00 + 30 31 2E 31 30 2E 31 39 39 39 04 00 00 33 35 35 + 35 04 00 00 33 35 35 36 04 00 00 33 35 37 32 19 + 00 00 53 65 6E 2E 20 4C 65 67 61 6C 20 43 6C 61 + 69 6D 73 20 43 6F 75 6E 73 65 6C 04 00 00 33 35 + 37 33 0F 00 00 53 70 65 7A 69 61 6C 61 75 66 67 + 61 62 65 6E 04 00 00 33 35 38 37 04 00 00 33 36 + 31 34 19 00 00 43 6F 6D 6D 75 6E 69 63 61 74 69 + 6F 6E 73 20 43 6F 6E 73 75 6C 74 61 6E 74 04 00 + 00 33 36 32 31 04 00 00 33 36 32 32 14 00 00 47 + 72 6C 2E 20 4B 6F 70 69 65 72 7A 65 6E 74 72 61 + 6C 65 6E 04 00 00 33 36 32 38 04 00 00 33 36 33 + 35 11 00 00 48 65 61 64 20 6F 66 20 49 41 20 5A + 75 72 69 63 68 04 00 00 33 36 33 36 0D 00 00 47 + 72 6C 2E 20 48 61 72 64 77 61 72 65 04 00 00 33 + 36 34 39 0D 00 00 44 6F 63 75 6D 65 6E 74 61 6C + 69 73 74 04 00 00 33 36 37 31 11 00 00 43 6F 72 + 70 6F 72 61 74 65 20 41 63 74 75 61 72 79 04 00 + 00 33 36 37 36 0D 00 00 48 65 61 64 20 6F 66 20 + 4C 45 2F 41 53 04 00 00 33 36 37 39 04 00 00 33 + 36 38 39 04 00 00 33 37 31 31 15 00 00 53 70 65 + 7A 69 61 6C 69 73 74 20 50 75 62 6C 69 73 68 69 + 6E 67 04 00 00 33 37 31 33 04 00 00 33 37 31 34 + 04 00 00 33 37 32 32 04 00 00 33 37 32 39 19 00 + 00 4C 65 69 74 65 72 20 50 6C 61 74 66 6F 72 6D + 20 45 6E 67 69 6E 65 65 72 2E 04 00 00 33 37 33 + 30 13 00 00 4D 61 6E 2E 20 41 64 6D 69 6E 69 73 + 74 72 61 74 69 6F 6E 04 00 00 33 37 33 36 17 00 + 00 48 65 61 64 20 6F 66 20 4C 6F 67 2E 20 4F 70 + 65 72 61 74 69 6F 6E 73 04 00 00 33 37 34 30 04 + 00 00 33 37 34 33 17 00 00 55 6E 64 65 72 77 72 + 69 74 69 6E 67 20 43 6F 6E 73 75 6C 74 61 6E 74 + 04 00 00 33 37 34 38 04 00 00 33 37 35 31 04 00 + 00 33 37 36 32 04 00 00 33 37 36 34 06 00 00 42 + 6F 67 6F 74 61 01 00 00 52 04 00 00 33 37 36 35 + 0D 00 00 52 65 67 69 6F 6E 61 6C 20 48 65 61 64 + 04 00 00 33 37 36 38 10 00 00 55 6E 64 65 72 77 + 72 69 74 65 72 20 41 67 72 6F 04 00 00 33 37 38 + 33 04 00 00 33 37 38 38 11 00 00 42 65 74 72 69 + 65 62 73 73 63 68 72 65 69 6E 65 72 04 00 00 33 + 37 39 33 19 00 00 53 65 6E 2E 20 47 72 6F 75 70 + 77 61 72 65 20 43 6F 6E 73 75 6C 74 61 6E 74 04 + 00 00 33 37 39 38 12 00 00 46 61 63 68 62 65 72 + 65 69 63 68 73 6C 65 69 74 65 72 04 00 00 33 38 + 30 30 0C 00 00 42 75 63 68 68 61 6C 74 65 72 69 + 6E 04 00 00 33 38 30 37 19 00 00 47 72 75 70 70 + 65 6E 6C 65 69 74 65 72 20 45 6E 74 77 69 63 6B + 6C 75 6E 67 04 00 00 33 38 31 31 0D 00 00 44 61 + 74 65 6E 74 79 70 69 73 74 69 6E 04 00 00 33 38 + 31 38 19 00 00 48 61 75 73 77 69 72 74 73 63 68 + 61 66 74 73 6D 69 74 61 72 62 65 69 74 2E 04 00 + 00 33 38 32 35 04 00 00 33 38 32 36 17 00 00 48 + 65 61 64 20 6F 66 20 47 72 6F 75 70 20 50 4D 20 + 43 72 65 64 69 74 04 00 00 33 38 32 38 0F 00 00 + 4D 65 64 69 63 61 6C 20 4F 66 66 69 63 65 72 04 + 00 00 33 38 35 31 04 00 00 33 38 35 32 04 00 00 + 33 38 37 30 04 00 00 33 38 37 36 19 00 00 4D 61 + 6E 2E 20 4C 65 67 61 6C 20 43 6C 61 69 6D 73 20 + 43 6F 75 6E 73 65 6C 04 00 00 33 38 38 36 04 00 + 00 33 38 38 37 0C 00 00 50 52 2D 42 65 72 61 74 + 65 72 69 6E 04 00 00 33 38 38 38 17 00 00 54 65 + 61 6D 6C 65 69 74 65 72 20 41 75 73 67 61 6E 67 + 73 70 6F 73 74 04 00 00 33 38 38 39 08 00 00 48 + 61 75 73 77 61 72 74 04 00 00 33 38 39 38 10 00 + 00 42 75 73 69 6E 65 73 73 20 41 6E 61 6C 79 73 + 74 04 00 00 33 38 39 39 19 00 00 53 65 63 74 2E + 20 48 65 61 64 20 49 6E 76 2E 20 52 65 6C 61 74 + 69 6F 6E 73 04 00 00 33 39 30 37 17 00 00 47 72 + 6C 2E 20 52 5A 20 50 6C 61 6E 2E 2F 53 74 65 75 + 65 72 75 6E 67 04 00 00 33 39 32 38 17 00 00 47 + 72 6C 2E 20 57 6F 72 6B 73 74 61 74 69 6F 6E 20 + 45 6E 67 69 6E 2E 04 00 00 33 39 33 35 02 00 00 + 43 50 04 00 00 33 39 33 36 11 00 00 47 72 6C 2E + 20 46 6C 75 74 2F 53 79 73 74 65 6D 65 04 00 00 + 33 39 35 32 04 00 00 33 39 35 35 04 00 00 33 39 + 36 39 04 00 00 33 39 37 37 13 00 00 42 4C 20 44 + 61 74 61 62 61 73 65 20 53 79 73 74 65 6D 73 04 + 00 00 33 39 38 30 04 00 00 33 39 38 33 04 00 00 + 33 39 38 36 04 00 00 33 39 38 39 04 00 00 33 39 + 39 30 14 00 00 47 72 6F 75 70 77 61 72 65 20 43 + 6F 6E 73 75 6C 74 61 6E 74 04 00 00 34 30 31 31 + 04 00 00 34 30 31 32 04 00 00 34 30 31 38 04 00 + 00 34 30 32 35 04 00 00 34 30 33 30 19 00 00 4F + 70 65 72 61 74 72 69 63 65 20 4B 6F 70 69 65 72 + 7A 65 6E 74 72 61 6C 65 04 00 00 34 30 33 31 0E + 00 00 55 6D 7A 75 67 73 66 61 63 68 6D 61 6E 6E + 04 00 00 34 30 33 35 04 00 00 34 30 33 37 04 00 + 00 34 30 33 39 04 00 00 34 30 34 32 04 00 00 34 + 30 35 32 04 00 00 34 30 35 38 04 00 00 34 30 35 + 39 04 00 00 34 30 36 34 18 00 00 48 65 61 64 20 + 6F 66 20 53 75 70 70 6F 72 74 20 53 65 72 76 69 + 63 65 73 04 00 00 34 30 38 30 15 00 00 53 61 63 + 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 46 69 + 62 75 04 00 00 34 30 38 31 04 00 00 34 30 38 32 + 17 00 00 4D 69 74 61 72 62 2E 20 53 69 63 68 65 + 72 68 65 69 74 73 6C 6F 67 65 02 00 00 49 43 04 + 00 00 34 30 38 36 04 00 00 34 30 39 36 04 00 00 + 34 31 30 35 04 00 00 34 31 30 36 04 00 00 34 31 + 30 38 13 00 00 53 75 70 70 6F 72 74 65 72 20 48 + 65 6C 70 20 44 65 73 6B 04 00 00 34 31 32 30 0D + 00 00 57 65 62 2D 50 75 62 6C 69 73 68 65 72 05 + 00 00 31 31 36 39 35 01 00 00 4B 05 00 00 31 31 + 36 39 36 05 00 00 31 31 36 39 37 05 00 00 31 31 + 37 30 32 05 00 00 31 31 37 31 30 05 00 00 31 31 + 37 31 31 11 00 00 53 6F 66 74 77 61 72 65 20 45 + 6E 67 69 6E 65 65 72 05 00 00 31 31 37 31 32 05 + 00 00 31 31 37 32 34 05 00 00 31 31 37 33 30 19 + 00 00 50 72 6F 6A 65 63 74 6D 61 6E 61 67 65 72 + 20 52 FC 73 63 68 6C 69 6B 6F 6E 05 00 00 31 31 + 37 33 31 05 00 00 31 31 37 33 32 05 00 00 31 31 + 37 34 30 05 00 00 31 31 37 34 31 05 00 00 31 31 + 37 34 34 19 00 00 48 65 61 64 20 4F 70 65 72 61 + 74 69 6F 6E 73 20 52 FC 73 63 68 6C 69 6B 2E 05 + 00 00 31 31 37 34 35 14 00 00 47 72 6C 2E 20 43 + 6F 73 74 20 41 63 63 6F 75 6E 74 69 6E 67 05 00 + 00 31 31 37 34 37 05 00 00 31 31 37 35 31 05 00 + 00 31 31 37 35 38 05 00 00 31 31 37 36 37 05 00 + 00 31 31 37 37 33 05 00 00 31 31 37 37 37 05 00 + 00 31 31 37 37 38 16 00 00 54 4C 20 52 61 75 6D + 62 65 77 69 72 74 73 63 68 61 66 74 75 6E 67 05 + 00 00 31 31 37 38 34 05 00 00 31 31 37 38 37 05 + 00 00 31 31 37 39 34 05 00 00 31 31 37 39 39 05 + 00 00 31 31 38 30 30 05 00 00 31 31 38 30 31 05 + 00 00 31 31 38 30 32 05 00 00 31 31 38 30 33 05 + 00 00 31 31 38 30 34 05 00 00 31 31 38 31 39 05 + 00 00 31 31 38 32 31 05 00 00 31 31 38 33 38 05 + 00 00 31 31 38 35 32 17 00 00 4A 75 6E 69 6F 72 + 20 42 75 73 69 6E 65 73 73 20 41 6E 61 6C 79 73 + 74 05 00 00 31 31 38 35 35 18 00 00 48 65 61 64 + 20 6F 66 20 52 69 73 6B 20 4D 65 61 73 2E 20 4D + 65 74 68 2E 05 00 00 31 31 38 35 36 14 00 00 47 + 49 53 2F 46 6C 6F 6F 64 20 53 70 65 63 69 61 6C + 69 73 74 05 00 00 31 31 38 35 38 05 00 00 31 31 + 38 36 32 10 00 00 46 6C 6F 6F 64 20 53 70 65 63 + 69 61 6C 69 73 74 05 00 00 31 31 38 38 38 05 00 + 00 31 31 38 39 34 05 00 00 31 31 38 39 39 05 00 + 00 31 31 39 31 30 0D 00 00 48 65 61 64 20 6F 66 + 20 4C 4E 2F 4E 4F 05 00 00 31 31 39 31 36 05 00 + 00 31 31 39 32 33 05 00 00 31 31 39 33 31 05 00 + 00 31 31 39 33 32 05 00 00 31 31 39 33 33 05 00 + 00 31 31 39 34 36 05 00 00 31 31 39 35 30 09 00 + 00 50 61 74 69 73 73 69 65 72 05 00 00 31 31 39 + 35 31 05 00 00 31 31 39 35 36 19 00 00 42 72 61 + 6E 64 4D 61 6E 61 67 65 72 20 43 6F 72 70 2E 43 + 6F 6D 6D 75 6E 2E 05 00 00 31 31 39 36 37 15 00 + 00 45 78 65 63 75 74 69 76 65 2D 48 6F 75 73 65 + 6B 65 65 70 65 72 05 00 00 31 31 39 36 39 19 00 + 00 52 65 73 74 2E 2B 42 61 6E 71 75 65 74 20 53 + 65 72 76 69 63 65 20 4D 67 72 05 00 00 31 31 39 + 37 30 05 00 00 31 31 39 37 31 05 00 00 31 31 39 + 37 38 05 00 00 31 31 39 38 37 14 00 00 53 61 63 + 68 62 65 61 72 62 65 69 74 65 72 20 4B 61 73 73 + 65 05 00 00 31 31 39 39 35 05 00 00 31 31 39 39 + 36 13 00 00 45 78 65 63 75 74 69 76 65 20 41 73 + 73 69 73 74 61 6E 74 05 00 00 31 32 30 30 30 04 + 00 00 34 35 36 34 04 00 00 34 35 37 31 04 00 00 + 34 35 37 36 04 00 00 34 35 39 32 0F 00 00 45 78 + 74 65 72 6E 65 72 20 4B 75 72 69 65 72 01 00 00 + 48 04 00 00 34 35 39 35 04 00 00 34 36 30 34 04 + 00 00 34 36 30 38 0F 00 00 52 75 6E 2D 6F 66 66 + 20 4D 61 6E 61 67 65 72 04 00 00 34 36 31 38 04 + 00 00 34 36 34 31 04 00 00 34 37 32 37 10 00 00 + 4D 69 74 61 72 62 65 69 74 65 72 49 6E 20 52 57 + 04 00 00 34 37 32 38 04 00 00 34 38 36 35 04 00 + 00 34 39 31 31 16 00 00 53 70 65 7A 2E 20 45 72 + 64 62 65 62 65 6E 2F 53 79 73 74 65 6D 65 04 00 + 00 34 39 33 33 04 00 00 34 39 33 34 04 00 00 34 + 39 33 35 04 00 00 34 39 33 38 04 00 00 34 39 35 + 31 13 00 00 54 4C 20 53 69 63 68 65 72 68 65 69 + 74 73 6C 6F 67 65 6E 04 00 00 34 39 35 38 04 00 + 00 34 39 37 30 14 00 00 53 70 61 6E 69 73 63 68 + FC 62 65 72 73 65 74 7A 65 72 69 6E 04 00 00 34 + 39 37 32 16 00 00 44 65 70 75 74 79 20 47 50 4D + 20 45 6E 67 69 6E 65 65 72 69 6E 67 04 00 00 34 + 39 39 36 14 00 00 53 65 72 76 69 63 65 6D 69 74 + 61 72 62 65 69 74 65 72 69 6E 04 00 00 35 30 30 + 34 11 00 00 46 69 6E 61 6E 63 69 61 6C 20 4F 66 + 66 69 63 65 72 04 00 00 35 30 30 39 04 00 00 35 + 30 31 32 02 00 00 4A 4B 04 00 00 35 30 32 34 19 + 00 00 48 65 61 64 20 4D 61 72 6B 65 74 2E 26 41 + 63 74 2E 20 53 75 70 70 6F 72 74 04 00 00 35 30 + 32 36 17 00 00 55 57 20 46 61 63 75 6C 74 61 74 + 69 76 65 20 43 61 73 75 61 6C 74 79 04 00 00 35 + 30 33 31 17 00 00 54 65 61 6D 6C 65 69 74 65 72 + 20 45 69 6E 67 61 6E 67 73 70 6F 73 74 04 00 00 + 35 30 33 39 04 00 00 35 30 35 34 04 00 00 35 30 + 36 30 16 00 00 44 69 76 2E 20 4F 70 2E 20 4F 66 + 66 69 63 65 72 20 28 44 4F 4F 29 04 00 00 35 30 + 36 38 18 00 00 42 4C 20 47 72 6F 75 70 20 4F 66 + 66 69 63 65 20 53 65 72 76 69 63 65 73 04 00 00 + 35 30 37 35 18 00 00 43 6F 2D 65 64 69 74 6F 72 + 20 61 6E 64 20 64 61 74 61 20 73 70 65 63 2E 04 + 00 00 35 30 38 39 0A 00 00 41 63 63 6F 75 6E 74 + 61 6E 74 04 00 00 35 31 31 36 14 00 00 4D 61 6E + 61 67 65 6D 65 6E 74 20 41 73 73 69 73 74 61 6E + 74 04 00 00 35 31 33 34 12 00 00 52 69 73 69 6B + 6F 73 70 65 7A 69 61 6C 69 73 74 69 6E 04 00 00 + 35 31 34 37 04 00 00 35 31 36 35 0C 00 00 46 61 + 63 68 2D 45 78 70 65 72 74 65 04 00 00 35 31 38 + 31 04 00 00 35 31 38 36 13 00 00 50 72 6F 6A 65 + 63 74 20 43 6F 6F 72 64 69 6E 61 74 6F 72 04 00 + 00 35 32 30 37 04 00 00 35 32 30 39 11 00 00 52 + 65 63 68 74 73 6B 6F 6E 73 75 6C 65 6E 74 69 6E + 04 00 00 35 32 31 35 04 00 00 35 32 31 39 04 00 + 00 35 32 34 33 15 00 00 47 72 61 64 2E 44 65 76 + 65 6C 2E 4D 67 72 2E 52 FC 73 63 68 2E 04 00 00 + 35 32 35 31 19 00 00 53 79 73 74 65 6D 65 6E 74 + 77 69 63 6B 6C 65 72 20 46 61 63 68 61 62 74 2E + 04 00 00 35 32 35 32 14 00 00 41 64 6D 69 6E 2E + 20 4D 69 74 61 72 62 65 69 74 65 72 69 6E 04 00 + 00 35 32 36 33 0E 00 00 52 65 69 73 65 62 65 72 + 61 74 65 72 69 6E 04 00 00 35 32 36 35 13 00 00 + 54 72 61 69 6E 69 6E 67 20 43 6F 6E 73 75 6C 74 + 61 6E 74 04 00 00 35 32 36 37 18 00 00 49 6E 66 + 6F 72 6D 61 74 69 6F 6E 73 73 70 65 7A 69 61 6C + 69 73 74 69 6E 04 00 00 35 32 37 32 19 00 00 48 + 65 61 64 20 6F 66 20 45 63 6F 6E 6F 6D 69 63 20 + 52 65 73 65 61 72 63 68 04 00 00 35 32 38 32 11 + 00 00 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 6D + 65 6E 74 04 00 00 35 32 38 33 04 00 00 35 32 39 + 32 0C 00 00 52 65 69 73 65 62 65 72 61 74 65 72 + 04 00 00 35 32 39 33 17 00 00 48 75 6D 61 6E 20 + 52 65 73 6F 75 72 63 65 73 20 53 75 70 70 6F 72 + 74 04 00 00 35 32 39 35 13 00 00 45 78 65 63 75 + 74 69 76 65 20 53 65 63 72 65 74 61 72 79 04 00 + 00 35 32 39 38 04 00 00 35 32 39 39 04 00 00 35 + 33 30 33 14 00 00 54 65 61 6D 6C 65 69 74 65 72 + 20 52 E9 63 2E 20 45 6E 67 65 04 00 00 35 33 30 + 38 0B 00 00 41 73 73 69 73 74 65 6E 74 69 6E 04 + 00 00 35 33 30 39 0D 00 00 50 6F 73 74 61 73 73 + 69 73 74 65 6E 74 04 00 00 35 33 32 34 04 00 00 + 35 33 33 31 04 00 00 35 33 34 31 13 00 00 44 65 + 70 2E 20 48 65 61 64 20 53 65 63 72 65 74 61 72 + 79 04 00 00 35 33 34 35 04 00 00 35 33 35 31 04 + 00 00 35 33 35 33 0A 00 00 35 30 39 2D 33 34 35 + 30 33 64 09 00 00 35 30 39 2D 33 34 35 30 33 09 + 00 00 35 30 39 2D 33 34 35 30 34 09 00 00 35 30 + 39 2D 33 34 35 30 35 09 00 00 35 30 39 2D 33 34 + 35 30 36 09 00 00 35 30 39 2D 33 34 35 30 37 09 + 00 00 35 30 39 2D 33 34 35 30 38 09 00 00 35 30 + 39 2D 33 34 35 30 39 09 00 00 35 30 39 2D 33 34 + 35 31 30 09 00 00 35 30 39 2D 33 34 35 31 31 09 + 00 00 35 30 39 2D 33 34 35 31 32 09 00 00 35 30 + 39 2D 33 34 35 31 33 09 00 00 35 30 39 2D 33 34 + 35 31 34 09 00 00 35 30 39 2D 33 34 35 31 35 09 + 00 00 35 30 39 2D 33 34 35 31 36 09 00 00 35 30 + 39 2D 33 34 35 31 37 09 00 00 35 30 39 2D 33 34 + 35 31 38 09 00 00 35 30 39 2D 33 34 35 31 39 09 + 00 00 35 30 39 2D 33 34 35 32 30 09 00 00 35 30 + 39 2D 33 34 35 32 31 09 00 00 35 30 39 2D 33 34 + 35 32 32 09 00 00 35 30 39 2D 33 34 35 32 33 09 + 00 00 35 30 39 2D 33 34 35 32 34 09 00 00 35 30 + 39 2D 33 34 35 32 35 09 00 00 35 30 39 2D 33 34 + 35 32 36 09 00 00 35 30 39 2D 33 34 35 32 37 09 + 00 00 35 30 39 2D 33 34 35 32 38 09 00 00 35 30 + 39 2D 33 34 35 32 39 09 00 00 35 30 39 2D 33 34 + 35 33 30 09 00 00 35 30 39 2D 33 34 35 33 31 09 + 00 00 35 30 39 2D 33 34 35 33 32 09 00 00 35 30 + 39 2D 33 34 35 33 33 09 00 00 35 30 39 2D 33 34 + 35 33 34 09 00 00 35 30 39 2D 33 34 35 33 35 09 + 00 00 35 30 39 2D 33 34 35 33 36 09 00 00 35 30 + 39 2D 33 34 35 33 37 09 00 00 35 30 39 2D 33 34 + 35 33 38 09 00 00 35 30 39 2D 33 34 35 33 39 09 + 00 00 35 30 39 2D 33 34 35 34 30 09 00 00 35 30 + 39 2D 33 34 35 34 31 09 00 00 35 30 39 2D 33 34 + 35 34 32 09 00 00 35 30 39 2D 33 34 35 34 33 09 + 00 00 35 30 39 2D 33 34 35 34 34 09 00 00 35 30 + 39 2D 33 34 35 34 35 09 00 00 35 30 39 2D 33 34 + 35 34 36 09 00 00 35 30 39 2D 33 34 35 34 37 09 + 00 00 35 30 39 2D 33 34 35 34 38 09 00 00 35 30 + 39 2D 33 34 35 34 39 09 00 00 35 30 39 2D 33 34 + 35 35 30 09 00 00 35 30 39 2D 33 34 35 35 31 09 + 00 00 35 30 39 2D 33 34 35 35 32 09 00 00 35 30 + 39 2D 33 34 35 35 33 09 00 00 35 30 39 2D 33 34 + 35 35 34 09 00 00 35 30 39 2D 33 34 35 35 35 09 + 00 00 35 30 39 2D 33 34 35 35 36 09 00 00 35 30 + 39 2D 33 34 35 35 37 09 00 00 35 30 39 2D 33 34 + 35 35 38 09 00 00 35 30 39 2D 33 34 35 35 39 09 + 00 00 35 30 39 2D 33 34 35 36 30 09 00 00 35 30 + 39 2D 33 34 35 36 31 09 00 00 35 30 39 2D 33 34 + 35 36 32 09 00 00 35 30 39 2D 33 34 35 36 33 09 + 00 00 35 30 39 2D 33 34 35 36 34 09 00 00 35 30 + 39 2D 33 34 35 36 35 09 00 00 35 30 39 2D 33 34 + 35 36 36 09 00 00 35 30 39 2D 33 34 35 36 37 09 + 00 00 35 30 39 2D 33 34 35 36 38 09 00 00 35 30 + 39 2D 33 34 35 36 39 09 00 00 35 30 39 2D 33 34 + 35 37 30 09 00 00 35 30 39 2D 33 34 35 37 31 09 + 00 00 35 30 39 2D 33 34 35 37 32 09 00 00 35 30 + 39 2D 33 34 35 37 33 09 00 00 35 30 39 2D 33 34 + 35 37 34 09 00 00 35 30 39 2D 33 34 35 37 35 09 + 00 00 35 30 39 2D 33 34 35 37 36 09 00 00 35 30 + 39 2D 33 34 35 37 37 09 00 00 35 30 39 2D 33 34 + 35 37 38 09 00 00 35 30 39 2D 33 34 35 37 39 09 + 00 00 35 30 39 2D 33 34 35 38 30 09 00 00 35 30 + 39 2D 33 34 35 38 31 09 00 00 35 30 39 2D 33 34 + 35 38 32 09 00 00 35 30 39 2D 33 34 35 38 33 09 + 00 00 35 30 39 2D 33 34 35 38 34 09 00 00 35 30 + 39 2D 33 34 35 38 35 09 00 00 35 30 39 2D 33 34 + 35 38 36 09 00 00 35 30 39 2D 33 34 35 38 37 09 + 00 00 35 30 39 2D 33 34 35 38 38 09 00 00 35 30 + 39 2D 33 34 35 38 39 09 00 00 35 30 39 2D 33 34 + 35 39 30 09 00 00 35 30 39 2D 33 34 35 39 31 09 + 00 00 35 30 39 2D 33 34 35 39 32 09 00 00 35 30 + 39 2D 33 34 35 39 33 09 00 00 35 30 39 2D 33 34 + 35 39 34 09 00 00 35 30 39 2D 33 34 35 39 35 09 + 00 00 35 30 39 2D 33 34 35 39 36 09 00 00 35 30 + 39 2D 33 34 35 39 37 09 00 00 35 30 39 2D 33 34 + 35 39 38 09 00 00 35 30 39 2D 33 34 35 39 39 09 + 00 00 35 30 39 2D 33 34 36 30 30 09 00 00 35 30 + 39 2D 33 34 36 30 31 09 00 00 35 30 39 2D 33 34 + 36 30 32 09 00 00 35 30 39 2D 33 34 36 30 33 09 + 00 00 35 30 39 2D 33 34 36 30 34 09 00 00 35 30 + 39 2D 33 34 36 30 35 09 00 00 35 30 39 2D 33 34 + 36 30 36 09 00 00 35 30 39 2D 33 34 36 30 37 09 + 00 00 35 30 39 2D 33 34 36 30 38 09 00 00 35 30 + 39 2D 33 34 36 30 39 09 00 00 35 30 39 2D 33 34 + 36 31 30 09 00 00 35 30 39 2D 33 34 36 31 31 09 + 00 00 35 30 39 2D 33 34 36 31 32 09 00 00 35 30 + 39 2D 33 34 36 31 33 09 00 00 35 30 39 2D 33 34 + 36 31 34 09 00 00 35 30 39 2D 33 34 36 31 35 09 + 00 00 35 30 39 2D 33 34 36 31 36 09 00 00 35 30 + 39 2D 33 34 36 31 37 09 00 00 35 30 39 2D 33 34 + 36 31 38 09 00 00 35 30 39 2D 33 34 36 31 39 09 + 00 00 35 30 39 2D 33 34 36 32 30 09 00 00 35 30 + 39 2D 33 34 36 32 31 09 00 00 35 30 39 2D 33 34 + 36 32 32 09 00 00 35 30 39 2D 33 34 36 32 33 09 + 00 00 35 30 39 2D 33 34 36 32 34 09 00 00 35 30 + 39 2D 33 34 36 32 35 09 00 00 35 30 39 2D 33 34 + 36 32 36 09 00 00 35 30 39 2D 33 34 36 32 37 09 + 00 00 35 30 39 2D 33 34 36 32 38 09 00 00 35 30 + 39 2D 33 34 36 32 39 09 00 00 35 30 39 2D 33 34 + 36 33 30 09 00 00 35 30 39 2D 33 34 36 33 31 09 + 00 00 35 30 39 2D 33 34 36 33 32 09 00 00 35 30 + 39 2D 33 34 36 33 33 09 00 00 35 30 39 2D 33 34 + 36 33 34 09 00 00 35 30 39 2D 33 34 36 33 35 09 + 00 00 35 30 39 2D 33 34 36 33 36 09 00 00 35 30 + 39 2D 33 34 36 33 37 09 00 00 35 30 39 2D 33 34 + 36 33 38 09 00 00 35 30 39 2D 33 34 36 33 39 09 + 00 00 35 30 39 2D 33 34 36 34 30 09 00 00 35 30 + 39 2D 33 34 36 34 31 09 00 00 35 30 39 2D 33 34 + 36 34 32 09 00 00 35 30 39 2D 33 34 36 34 33 09 + 00 00 35 30 39 2D 33 34 36 34 34 09 00 00 35 30 + 39 2D 33 34 36 34 35 09 00 00 35 30 39 2D 33 34 + 36 34 36 09 00 00 35 30 39 2D 33 34 36 34 37 09 + 00 00 35 30 39 2D 33 34 36 34 38 09 00 00 35 30 + 39 2D 33 34 36 34 39 09 00 00 35 30 39 2D 33 34 + 36 35 30 09 00 00 35 30 39 2D 33 34 36 35 31 09 + 00 00 35 30 39 2D 33 34 36 35 32 09 00 00 35 30 + 39 2D 33 34 36 35 33 09 00 00 35 30 39 2D 33 34 + 36 35 34 03 00 00 73 64 66 0D 00 00 6D 79 20 73 + 75 70 65 72 76 69 73 6F 72 01 00 00 3F 08 00 00 + 78 78 78 79 79 79 32 33 0E 00 00 34 31 20 31 20 + 78 78 78 20 39 39 20 39 39 08 00 00 75 6E 68 6B + 6E 6F 77 6E 05 00 00 68 65 75 74 65 0A 00 00 74 + 68 69 73 20 6D 6F 6E 74 68 11 00 00 6D 79 20 72 + 65 70 6F 72 74 69 6E 67 20 75 6E 69 74 05 00 00 + 49 74 61 6C 79 0C 00 00 75 73 64 20 33 33 33 33 + 33 2C 33 34 13 00 00 75 73 64 20 33 33 33 34 20 + 2B 20 47 50 44 20 33 33 34 35 06 00 00 6B 65 69 + 6E 65 72 07 00 00 33 31 2E 32 2E 36 33 03 00 00 + 20 43 48 04 00 00 38 34 38 31 04 00 00 38 34 38 + 34 04 00 00 38 34 39 31 04 00 00 38 34 39 33 02 + 00 00 53 56 04 00 00 38 34 39 34 19 00 00 44 65 + 70 2E 48 65 61 64 20 6F 66 20 49 6E 74 65 72 6C + 69 6E 65 20 4D 67 74 04 00 00 38 35 30 30 04 00 + 00 38 35 30 35 04 00 00 38 35 31 33 04 00 00 38 + 35 31 34 04 00 00 38 35 31 37 04 00 00 38 35 31 + 38 04 00 00 38 35 32 38 04 00 00 38 35 32 39 04 + 00 00 38 35 33 30 04 00 00 38 35 33 33 04 00 00 + 38 35 33 34 04 00 00 38 35 34 31 04 00 00 38 35 + 34 33 04 00 00 38 35 34 35 15 00 00 53 70 65 63 + 69 61 6C 69 73 74 20 65 2D 43 6F 6D 6D 65 72 63 + 65 04 00 00 38 35 34 36 17 00 00 46 61 63 68 72 + 65 66 65 72 65 6E 74 69 6E 20 43 61 73 75 61 6C + 74 79 04 00 00 38 35 34 38 03 00 00 5A 57 44 04 + 00 00 38 35 35 30 04 00 00 38 35 35 32 14 00 00 + 46 69 6E 61 6E 63 69 61 6C 20 41 63 63 6F 75 6E + 74 61 6E 74 04 00 00 38 35 35 36 04 00 00 38 35 + 35 38 04 00 00 38 35 36 33 04 00 00 38 35 37 36 + 03 00 00 49 54 4C 04 00 00 38 35 38 32 04 00 00 + 38 35 38 37 13 00 00 53 70 65 7A 69 61 6C 69 73 + 74 20 45 72 64 62 65 62 65 6E 03 00 00 45 53 50 + 04 00 00 38 35 39 37 04 00 00 38 36 30 32 03 00 + 00 46 52 46 04 00 00 38 36 30 37 04 00 00 38 36 + 30 38 04 00 00 38 36 31 36 03 00 00 43 4E 59 04 + 00 00 38 36 32 30 03 00 00 48 4B 44 04 00 00 38 + 36 32 32 04 00 00 38 36 32 37 12 00 00 65 2D 61 + 6C 6C 69 61 6E 63 65 20 6D 61 6E 61 67 65 72 03 + 00 00 4B 52 57 04 00 00 38 36 33 33 04 00 00 38 + 36 33 38 0D 00 00 48 65 61 64 20 6F 66 20 4C 45 + 2F 42 49 04 00 00 38 36 34 30 04 00 00 38 36 34 + 35 03 00 00 54 57 44 04 00 00 38 36 34 36 04 00 + 00 38 36 36 33 13 00 00 50 72 6F 6A 65 6B 74 2D + 41 73 73 69 73 74 65 6E 74 69 6E 04 00 00 38 36 + 36 34 04 00 00 38 36 36 36 04 00 00 38 36 36 39 + 04 00 00 38 36 37 37 0F 00 00 4C 69 66 65 20 4D + 61 6E 61 67 65 72 20 48 4B 04 00 00 38 36 38 32 + 18 00 00 4D 65 6D 62 65 72 20 45 78 65 63 75 74 + 69 76 65 20 54 65 61 6D 20 45 55 02 00 00 4C 4C + 04 00 00 38 36 39 36 0B 00 00 4B 56 2D 4C 65 68 + 72 6C 69 6E 67 04 00 00 38 36 39 37 04 00 00 38 + 36 39 39 04 00 00 38 37 30 30 04 00 00 38 37 30 + 31 03 00 00 44 45 4D 04 00 00 38 37 30 32 04 00 + 00 38 37 30 34 04 00 00 38 37 30 35 03 00 00 43 + 4F 50 04 00 00 38 37 30 36 04 00 00 38 37 30 37 + 04 00 00 38 37 31 30 04 00 00 38 37 31 32 0F 00 + 00 4D 65 64 69 61 20 41 73 73 69 73 74 61 6E 74 + 04 00 00 38 37 31 36 04 00 00 38 37 31 37 13 00 + 00 48 65 61 64 20 6F 66 20 4C 41 2F 4C 45 2F 4C + 4E 20 49 54 03 00 00 42 45 46 04 00 00 38 37 32 + 31 13 00 00 4C 65 69 74 65 72 20 52 65 63 68 74 + 73 64 69 65 6E 73 74 04 00 00 38 37 32 37 04 00 + 00 38 37 32 38 04 00 00 38 37 34 32 03 00 00 56 + 45 42 04 00 00 38 37 34 33 04 00 00 38 37 34 34 + 04 00 00 38 37 35 39 16 00 00 53 70 65 7A 69 61 + 6C 69 73 74 20 53 74 75 72 6D 2F 4D 65 74 65 6F + 04 00 00 38 37 36 30 04 00 00 38 37 36 32 04 00 + 00 38 37 36 38 04 00 00 38 37 37 35 04 00 00 38 + 37 37 39 04 00 00 38 37 38 36 19 00 00 48 65 61 + 64 20 4D 65 64 65 78 20 4D 6F 6E 69 74 6F 72 69 + 6E 67 55 6E 69 74 04 00 00 38 37 38 37 17 00 00 + 48 65 61 64 20 52 69 73 6B 20 4D 67 6D 74 20 26 + 20 4D 61 67 6E 75 6D 04 00 00 38 38 31 37 04 00 + 00 38 38 32 33 04 00 00 38 38 33 34 04 00 00 38 + 38 33 38 04 00 00 38 38 33 39 04 00 00 38 38 35 + 34 16 00 00 48 65 61 64 20 6F 66 20 47 6C 6F 62 + 61 6C 20 43 6C 69 65 6E 74 73 04 00 00 38 38 36 + 34 04 00 00 38 38 36 35 04 00 00 38 38 36 38 19 + 00 00 43 6C 61 69 6D 73 2F 50 6F 72 74 66 6F 6C + 69 6F 20 41 73 73 2E 4D 61 6E 2E 04 00 00 38 38 + 37 38 14 00 00 54 65 61 6D 6C 65 69 74 65 72 69 + 6E 20 53 65 72 76 69 63 65 04 00 00 38 38 39 32 + 04 00 00 38 38 39 33 19 00 00 47 72 6C 2E 20 54 + 65 6C 65 6D 61 74 69 6B 2F 41 56 2D 54 65 63 68 + 6E 69 6B 04 00 00 38 38 39 34 0D 00 00 54 65 6C + 65 6D 61 74 69 6B 65 72 69 6E 04 00 00 38 38 39 + 37 04 00 00 38 39 30 30 13 00 00 50 72 6F 67 72 + 61 6D 20 43 6F 6F 72 64 69 6E 61 74 6F 72 04 00 + 00 38 39 30 35 03 00 00 52 55 52 04 00 00 38 39 + 30 37 10 00 00 47 65 62 E4 75 64 65 74 65 63 68 + 6E 69 6B 65 72 04 00 00 38 39 31 30 04 00 00 38 + 39 31 32 15 00 00 53 74 6F 72 61 67 65 20 41 64 + 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00 38 39 + 32 35 04 00 00 38 39 33 37 14 00 00 52 65 67 69 + 6F 6E 61 6C 20 49 47 50 20 4D 61 6E 61 67 65 72 + 04 00 00 38 39 33 38 04 00 00 38 39 34 31 04 00 + 00 38 39 34 33 04 00 00 38 39 34 35 04 00 00 38 + 39 34 38 04 00 00 38 39 35 38 04 00 00 38 39 36 + 33 07 00 00 41 75 64 69 74 6F 72 04 00 00 38 39 + 36 34 04 00 00 39 30 38 30 18 00 00 49 6E 76 2E + 20 50 72 6F 66 2E 2F 4C 65 67 61 6C 20 43 6F 75 + 6E 73 65 6C 04 00 00 39 30 38 31 04 00 00 39 30 + 38 35 04 00 00 39 31 30 37 0F 00 00 50 61 79 72 + 6F 6C 6C 20 53 75 70 70 6F 72 74 04 00 00 39 31 + 31 34 11 00 00 41 73 73 69 73 74 61 6E 74 20 41 + 63 74 75 61 72 79 03 00 00 35 38 34 04 00 00 39 + 31 31 38 04 00 00 39 31 32 31 04 00 00 39 31 34 + 35 16 00 00 41 73 73 2E 20 46 69 6E 61 6E 63 69 + 61 6C 20 4F 66 66 69 63 65 72 04 00 00 39 31 34 + 36 0C 00 00 4B 6F 63 68 6C 65 68 72 6C 69 6E 67 + 04 00 00 39 31 34 37 04 00 00 39 31 34 38 04 00 + 00 39 31 34 39 04 00 00 39 31 35 35 04 00 00 39 + 31 35 39 04 00 00 39 31 37 31 04 00 00 39 31 37 + 35 18 00 00 53 70 65 63 69 61 6C 20 41 73 73 69 + 67 2E 26 4C 6F 67 69 73 74 69 63 73 04 00 00 39 + 31 38 35 04 00 00 39 31 38 36 04 00 00 39 31 38 + 39 04 00 00 39 32 30 35 04 00 00 39 32 30 37 19 + 00 00 44 65 70 75 74 79 20 43 68 69 65 66 20 4D + 65 64 69 63 61 6C 20 4F 66 66 2E 04 00 00 39 32 + 35 35 16 00 00 48 65 61 64 20 6F 66 20 49 6E 74 + 65 72 6C 69 6E 65 20 4D 67 74 2E 04 00 00 39 33 + 30 33 04 00 00 39 33 31 37 04 00 00 39 33 32 35 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2 new file mode 100755 index 0000000000..05aa7e9dc3 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2 @@ -0,0 +1,515 @@ + 3C 00 20 20 04 00 00 39 33 34 35 04 00 00 39 33 + 35 39 10 00 00 48 65 61 64 20 6F 66 20 49 41 20 + 4D 67 6D 74 2E 04 00 00 39 34 33 31 04 00 00 39 + 34 34 35 0A 00 00 49 54 20 53 75 70 70 6F 72 74 + 04 00 00 39 34 34 39 04 00 00 39 34 36 37 04 00 + 00 39 34 38 35 04 00 00 39 34 38 37 19 00 00 47 + 72 6C 2E 20 46 69 6E 61 6E 63 69 61 6C 20 41 63 + 63 6F 75 6E 74 69 6E 67 04 00 00 39 34 38 39 04 + 00 00 39 35 30 31 04 00 00 39 35 30 33 04 00 00 + 39 35 30 39 11 00 00 54 65 61 6D 6C 65 69 74 65 + 72 20 55 6D 7A FC 67 65 04 00 00 39 35 31 33 04 + 00 00 39 35 32 37 04 00 00 39 35 35 35 04 00 00 + 39 35 37 31 04 00 00 39 35 37 33 04 00 00 39 35 + 39 39 04 00 00 39 36 30 37 04 00 00 39 36 35 37 + 19 00 00 50 6F 72 74 75 67 69 65 73 69 73 63 68 + FC 62 65 72 73 65 74 7A 65 72 69 6E 04 00 00 39 + 36 35 39 0B 00 00 50 52 2D 52 65 64 61 6B 74 6F + 72 04 00 00 39 36 38 37 18 00 00 55 6D 77 65 6C + 74 73 63 68 75 74 7A 62 65 61 75 66 74 72 61 67 + 74 65 72 04 00 00 39 37 30 35 19 00 00 48 65 61 + 64 20 54 65 63 68 6E 2E 20 53 75 70 70 6F 72 74 + 20 4C 41 2F 49 54 04 00 00 39 37 31 33 04 00 00 + 39 37 32 33 16 00 00 48 65 61 6C 74 68 20 43 61 + 72 65 20 53 70 65 63 69 61 6C 69 73 74 04 00 00 + 39 37 33 31 04 00 00 39 37 34 39 0C 00 00 52 69 + 73 6B 20 41 6E 61 6C 79 73 74 04 00 00 39 37 35 + 35 04 00 00 39 37 35 39 04 00 00 39 37 36 33 04 + 00 00 39 38 32 35 14 00 00 4D 61 72 6B 65 74 69 + 6E 67 20 52 FC 73 63 68 6C 69 6B 6F 6E 04 00 00 + 39 38 33 35 16 00 00 46 69 6E 61 6E 63 2E 53 6F + 6C 75 74 69 6F 6E 73 20 43 6F 6E 73 2E 04 00 00 + 39 38 33 39 04 00 00 39 38 36 35 04 00 00 39 38 + 36 39 19 00 00 50 72 6F 6A 65 6B 74 6C 2E 20 46 + 69 6E 2E 20 41 63 63 6F 75 6E 74 69 6E 67 04 00 + 00 39 38 38 33 13 00 00 48 52 2D 4D 49 53 20 55 + 73 65 72 20 53 75 70 70 6F 72 74 04 00 00 39 38 + 38 35 12 00 00 48 65 61 64 20 6F 66 20 43 6C 61 + 69 6D 73 20 4D 67 74 04 00 00 39 38 38 37 04 00 + 00 39 38 39 39 03 00 00 50 4C 5A 04 00 00 39 39 + 31 33 04 00 00 39 39 32 30 03 00 00 53 47 44 04 + 00 00 39 39 32 32 04 00 00 39 39 33 30 04 00 00 + 39 39 35 31 0E 00 00 4D 44 2D 41 73 73 69 73 74 + 65 6E 74 69 6E 04 00 00 39 39 35 33 04 00 00 39 + 39 36 31 19 00 00 47 72 6F 75 70 20 50 72 6F 64 + 2E 4D 61 6E 61 67 2E 43 61 73 75 61 6C 74 79 0D + 00 00 4E 65 77 20 59 6F 72 6B 2C 20 55 53 41 04 + 00 00 39 39 36 33 04 00 00 39 39 37 33 04 00 00 + 39 39 37 35 04 00 00 39 39 38 36 05 00 00 31 30 + 30 31 38 05 00 00 31 30 30 32 34 05 00 00 31 30 + 30 32 36 05 00 00 31 30 30 32 39 05 00 00 31 30 + 30 33 31 05 00 00 31 30 30 34 33 19 00 00 50 72 + 6F 6A 27 6D 69 74 61 72 62 65 69 74 65 72 20 46 + 61 63 68 61 62 74 2E 05 00 00 31 30 30 34 37 05 + 00 00 31 30 30 35 39 05 00 00 31 30 30 36 33 05 + 00 00 31 30 30 36 39 05 00 00 31 30 30 37 31 03 + 00 00 4A 50 59 05 00 00 31 30 30 37 33 05 00 00 + 31 30 30 37 35 19 00 00 47 72 75 70 70 65 6E 6C + 65 69 74 65 72 20 50 6F 73 74 64 69 65 6E 73 74 + 65 05 00 00 31 30 30 38 31 14 00 00 54 4C 20 47 + 65 62 E4 75 64 65 6D 61 6E 61 67 65 6D 65 6E 74 + 05 00 00 31 30 30 38 33 11 00 00 43 6C 61 69 6D + 73 20 43 6F 6E 73 75 6C 74 61 6E 74 05 00 00 31 + 30 30 39 31 05 00 00 31 30 30 39 35 05 00 00 31 + 30 30 39 39 05 00 00 31 30 31 37 32 12 00 00 47 + 72 75 70 70 65 6E 6C 65 69 74 65 72 20 46 69 62 + 75 05 00 00 31 30 31 38 32 05 00 00 31 30 31 38 + 38 05 00 00 31 30 31 39 34 12 00 00 45 69 6E 72 + 69 63 68 74 75 6E 67 73 70 6C 61 6E 65 72 05 00 + 00 31 30 31 39 36 05 00 00 31 30 32 30 30 05 00 + 00 31 30 32 30 34 0D 00 00 49 47 50 20 41 73 73 + 6F 63 69 61 74 65 05 00 00 31 30 32 33 36 0F 00 + 00 50 72 6F 6A 65 63 74 20 4F 66 66 69 63 65 72 + 05 00 00 31 30 32 36 30 05 00 00 31 30 32 36 32 + 03 00 00 4E 4C 47 05 00 00 31 30 32 38 30 05 00 + 00 31 30 32 39 38 05 00 00 31 30 33 32 38 05 00 + 00 31 30 33 33 34 0E 00 00 44 65 70 75 74 79 20 + 48 65 61 64 20 43 58 05 00 00 31 30 33 33 38 05 + 00 00 31 30 33 35 30 05 00 00 31 30 33 37 30 05 + 00 00 31 30 33 37 34 13 00 00 4C 65 69 74 65 72 + 20 45 69 6E 6B 61 75 66 20 53 52 47 53 05 00 00 + 31 30 33 39 32 15 00 00 41 62 74 65 69 6C 75 6E + 67 73 2D 53 65 6B 72 65 74 E4 72 69 6E 05 00 00 + 31 30 33 39 34 05 00 00 31 30 33 39 36 05 00 00 + 31 30 33 39 38 15 00 00 41 63 63 6F 75 6E 74 61 + 6E 74 20 47 72 6F 75 70 20 52 65 70 2E 05 00 00 + 31 30 34 30 30 05 00 00 31 30 34 33 31 05 00 00 + 31 30 35 30 37 05 00 00 31 30 35 32 37 05 00 00 + 31 30 35 35 32 05 00 00 31 30 35 35 36 05 00 00 + 31 30 35 35 37 18 00 00 43 68 69 65 66 20 41 63 + 63 6F 75 6E 74 69 6E 67 20 4F 66 66 69 63 65 72 + 12 00 00 4D 61 6E 2E 20 4C 65 67 61 6C 20 43 6F + 75 6E 73 65 6C 04 00 00 34 31 33 32 11 00 00 50 + 4C 20 4B 6F 6E 73 6F 6C 69 64 69 65 72 75 6E 67 + 04 00 00 34 31 33 33 04 00 00 34 31 33 34 17 00 + 00 48 75 6D 61 6E 20 52 65 73 6F 75 72 63 65 73 + 20 4D 61 6E 61 67 65 72 04 00 00 34 31 35 30 04 + 00 00 34 31 35 37 04 00 00 34 31 36 37 13 00 00 + 53 65 6E 2E 20 46 69 6E 61 6E 63 69 61 6C 20 41 + 63 63 2E 04 00 00 34 32 30 35 04 00 00 34 32 30 + 38 13 00 00 53 65 63 72 65 74 61 72 79 2F 41 73 + 73 69 73 74 61 6E 74 04 00 00 34 32 31 39 04 00 + 00 34 32 32 37 04 00 00 34 32 32 39 10 00 00 43 + 6F 6D 6D 2E 20 53 70 65 63 69 61 6C 69 73 74 04 + 00 00 34 32 33 36 19 00 00 44 65 70 2E 48 65 61 + 64 20 52 4E 2F 48 65 61 64 20 43 61 74 53 75 70 + 70 2E 04 00 00 34 32 33 38 04 00 00 34 32 34 32 + 04 00 00 34 32 34 37 04 00 00 34 32 35 35 04 00 + 00 34 32 36 32 11 00 00 44 65 70 75 74 79 20 48 + 65 61 64 20 6F 66 20 49 46 04 00 00 34 32 36 39 + 16 00 00 53 65 72 76 69 63 65 66 61 63 68 6D 69 + 74 61 72 62 65 69 74 65 72 04 00 00 34 32 37 37 + 09 00 00 43 68 61 75 66 66 65 75 72 04 00 00 34 + 32 38 33 0E 00 00 52 E9 63 65 70 74 69 6F 6E 69 + 73 74 69 6E 04 00 00 34 32 38 34 02 00 00 4D 4D + 04 00 00 34 32 38 39 13 00 00 53 65 6E 69 6F 72 + 20 52 69 73 6B 20 41 6E 61 6C 79 73 74 04 00 00 + 34 33 30 36 04 00 00 34 33 30 39 19 00 00 48 65 + 61 64 20 6F 66 20 43 6F 6E 74 72 61 63 74 20 53 + 65 72 76 69 63 65 73 04 00 00 34 33 31 36 15 00 + 00 43 6F 6D 6D 2E 20 41 73 73 2E 20 52 FC 73 63 + 68 6C 69 6B 6F 6E 04 00 00 34 33 33 31 04 00 00 + 34 33 33 32 18 00 00 47 72 6F 75 70 20 43 6F 6D + 70 6C 69 61 6E 63 65 20 4F 66 66 69 63 65 72 04 + 00 00 34 33 34 32 02 00 00 56 4F 04 00 00 34 33 + 34 35 10 00 00 53 65 6E 69 6F 72 20 45 63 6F 6E + 6F 6D 69 73 74 04 00 00 34 33 34 36 16 00 00 47 + 72 6C 2E 20 47 65 6E 65 72 61 6C 20 4C 65 64 67 + 65 72 20 5A 48 04 00 00 34 33 34 39 04 00 00 34 + 33 35 32 10 00 00 4D 65 64 69 61 20 43 6F 6E 73 + 75 6C 74 61 6E 74 04 00 00 34 33 35 39 14 00 00 + 47 72 61 66 69 73 63 68 65 20 53 61 63 68 62 65 + 61 72 62 2E 02 00 00 4C 48 04 00 00 34 33 36 32 + 14 00 00 50 72 6F 6A 65 63 74 73 20 53 52 41 20 + 48 6F 6C 64 69 6E 67 04 00 00 34 33 36 39 04 00 + 00 34 33 38 34 0D 00 00 41 63 63 6F 75 6E 74 69 + 6E 67 20 50 56 04 00 00 34 33 39 39 04 00 00 34 + 34 30 32 04 00 00 34 34 31 31 01 00 00 44 04 00 + 00 34 34 32 32 04 00 00 34 34 32 39 04 00 00 34 + 34 35 36 04 00 00 34 34 35 37 12 00 00 54 65 63 + 68 6E 2E 20 4D 69 74 61 72 62 65 69 74 65 72 04 + 00 00 34 34 35 38 16 00 00 54 65 61 6D 6C 65 69 + 74 65 72 20 53 70 6F 72 74 61 6E 6C 61 67 65 04 + 00 00 34 34 36 32 16 00 00 54 65 61 6D 6C 65 69 + 74 65 72 69 6E 20 52 E9 63 65 70 74 69 6F 6E 04 + 00 00 34 34 36 34 04 00 00 34 34 36 39 04 00 00 + 34 34 37 39 15 00 00 47 72 6C 2E 20 42 65 74 72 + 69 65 62 20 41 64 6C 69 73 77 69 6C 04 00 00 34 + 34 38 30 04 00 00 34 34 38 31 11 00 00 54 4C 20 + 42 65 74 72 69 65 62 73 64 69 65 6E 73 74 04 00 + 00 34 34 38 32 12 00 00 42 65 74 72 69 65 62 73 + 65 6C 65 6B 74 72 69 6B 65 72 04 00 00 34 34 39 + 32 11 00 00 45 78 65 63 75 74 69 76 65 20 53 75 + 70 70 6F 72 74 04 00 00 34 35 33 35 04 00 00 34 + 35 34 30 04 00 00 34 35 36 30 19 00 00 4C 65 61 + 72 6E 69 6E 67 26 44 65 76 65 6C 6F 70 2E 20 4D + 61 6E 61 67 65 72 06 00 00 6D 79 6E 61 6D 65 0B + 00 00 6D 79 66 69 72 73 74 6E 61 6D 65 04 00 00 + 37 38 37 35 19 00 00 53 65 6D 69 6E 61 72 20 26 + 20 54 72 61 69 6E 69 6E 67 20 43 6F 6F 72 64 2E + 04 00 00 37 38 37 37 19 00 00 47 72 6F 75 70 20 + 4D 61 6E 61 67 65 6D 65 6E 74 20 44 65 76 65 6C + 6F 70 2E 03 00 00 31 33 37 04 00 00 37 38 38 38 + 04 00 00 37 38 39 37 03 00 00 5A 41 52 04 00 00 + 37 39 31 32 18 00 00 48 65 61 64 20 6F 66 20 49 + 6E 66 6F 72 6D 61 74 69 6F 6E 20 4D 67 6D 74 04 + 00 00 37 39 31 35 04 00 00 37 39 31 39 04 00 00 + 37 39 34 36 04 00 00 37 39 35 32 04 00 00 37 39 + 36 36 04 00 00 37 39 39 36 04 00 00 38 30 30 32 + 04 00 00 38 30 30 36 04 00 00 38 30 30 37 04 00 + 00 38 30 31 30 04 00 00 38 30 33 33 04 00 00 38 + 30 33 38 0B 00 00 54 65 72 6D 69 6E 6F 6C 6F 67 + 65 04 00 00 38 30 34 32 04 00 00 38 30 34 34 04 + 00 00 38 30 35 32 04 00 00 38 30 35 33 04 00 00 + 38 30 35 39 04 00 00 38 30 36 35 0B 00 00 56 52 + 2D 53 65 6B 72 65 74 E4 72 04 00 00 38 30 38 32 + 04 00 00 38 30 38 35 04 00 00 38 30 38 36 19 00 + 00 50 6F 72 74 75 67 69 65 73 69 73 63 68 2D 55 + 65 62 65 72 73 65 74 7A 65 72 04 00 00 38 30 38 + 38 04 00 00 38 30 39 35 12 00 00 4F 70 65 72 61 + 74 69 6F 6E 73 20 4D 61 6E 61 67 65 72 04 00 00 + 38 31 30 31 18 00 00 47 72 6C 2E 20 52 61 75 6D + 62 65 77 69 72 74 73 63 68 61 66 74 75 6E 67 04 + 00 00 38 31 30 34 04 00 00 38 31 30 35 04 00 00 + 38 31 30 37 13 00 00 48 65 61 64 20 6F 66 20 46 + 6C 6F 6F 64 20 47 72 6F 75 70 04 00 00 38 31 30 + 38 04 00 00 38 31 31 33 04 00 00 38 31 31 37 04 + 00 00 38 31 31 38 03 00 00 35 33 30 04 00 00 38 + 31 32 32 11 00 00 54 65 63 68 6E 69 63 61 6C 20 + 53 75 70 70 6F 72 74 04 00 00 38 31 33 39 04 00 + 00 38 31 34 33 04 00 00 38 31 34 35 19 00 00 48 + 65 61 64 20 6F 66 20 52 69 73 63 20 52 65 70 2F + 53 74 65 65 72 69 6E 67 04 00 00 38 31 34 37 04 + 00 00 38 31 34 38 04 00 00 38 31 34 39 04 00 00 + 38 31 35 30 04 00 00 38 31 35 34 04 00 00 38 31 + 35 39 0D 00 00 43 6C 61 69 6D 73 20 45 78 70 65 + 72 74 04 00 00 38 31 37 30 04 00 00 38 31 38 37 + 18 00 00 48 65 61 64 20 6F 66 20 48 52 20 53 79 + 73 74 65 6D 73 26 43 6F 6D 70 2E 04 00 00 38 31 + 39 34 04 00 00 38 31 39 35 0C 00 00 49 54 2D 53 + 75 70 70 6F 72 74 65 72 04 00 00 38 31 39 37 04 + 00 00 38 31 39 38 0F 00 00 52 69 73 69 6B 6F 69 + 6E 67 65 6E 69 65 75 72 04 00 00 38 32 30 39 04 + 00 00 38 32 31 35 04 00 00 38 32 31 36 0D 00 00 + 49 54 2D 53 70 65 63 69 61 6C 69 73 74 04 00 00 + 38 32 32 37 18 00 00 53 61 63 68 62 2E 4B 75 6E + 64 65 6E 67 65 73 63 68 2E 2F 50 75 62 6C 2E 04 + 00 00 38 32 33 30 04 00 00 38 32 33 34 04 00 00 + 38 32 33 37 04 00 00 38 32 33 39 07 00 00 43 6F + 75 6E 74 72 79 08 00 00 44 69 76 69 73 69 6F 6E + 0B 00 00 44 61 74 65 4F 66 42 69 72 74 68 0B 00 + 00 44 61 74 65 4F 66 45 6E 74 72 79 03 00 00 53 + 65 78 08 00 00 46 75 6E 63 74 69 6F 6E 0A 00 00 + 53 75 70 65 72 76 69 73 6F 72 08 00 00 43 75 72 + 72 65 6E 63 79 03 00 00 33 32 34 02 00 00 43 48 + 06 00 00 5A 75 72 69 63 68 01 00 00 50 02 00 00 + 49 53 02 00 00 43 53 03 00 00 32 39 32 01 00 00 + 4D 11 00 00 47 72 6C 2E 20 41 63 63 65 73 73 20 + 4D 67 6D 74 2E 02 00 00 4E 6F 03 00 00 55 53 44 + 01 00 00 30 02 00 00 50 45 03 00 00 32 39 38 16 + 00 00 53 65 6E 69 6F 72 20 53 79 73 74 65 6D 20 + 45 6E 67 69 6E 65 65 72 03 00 00 32 39 39 18 00 + 00 4D 65 6D 62 65 72 20 45 78 65 63 75 74 69 76 + 65 20 54 65 61 6D 20 49 54 01 00 00 4F 02 00 00 + 52 47 02 00 00 54 54 03 00 00 33 31 32 0F 00 00 + 54 65 6D 70 6F 72 61 72 79 20 73 74 61 66 66 01 + 00 00 51 02 00 00 42 4F 01 00 00 32 17 00 00 47 + 72 6F 75 70 20 4E 6F 6E 20 4C 69 66 65 20 52 65 + 69 6E 73 75 72 2E 02 00 00 36 31 10 00 00 41 73 + 73 69 73 74 65 6E 74 20 64 65 72 20 47 4C 01 00 + 00 4A 02 00 00 46 52 02 00 00 52 41 02 00 00 38 + 31 0E 00 00 53 65 6B 74 69 6F 6E 73 6C 65 69 74 + 65 72 02 00 00 48 53 02 00 00 43 4F 03 00 00 31 + 30 39 0F 00 00 50 61 79 72 6F 6C 6C 20 4D 61 6E + 61 67 65 72 03 00 00 31 34 30 02 00 00 49 45 03 + 00 00 31 34 37 14 00 00 50 72 6F 6A 65 6B 74 2D + 42 65 61 75 66 74 72 61 67 74 65 72 02 00 00 52 + 50 03 00 00 31 34 38 19 00 00 48 65 61 64 20 6F + 66 20 47 72 6F 75 70 20 50 4D 20 50 72 6F 70 65 + 72 74 79 02 00 00 52 54 03 00 00 31 34 39 17 00 + 00 53 65 6E 2E 20 50 72 6F 64 75 63 74 20 53 70 + 65 63 69 61 6C 69 73 74 03 00 00 31 35 33 0B 00 + 00 44 65 70 75 74 79 20 48 65 61 64 02 00 00 52 + 4C 02 00 00 47 43 03 00 00 31 37 35 18 00 00 47 + 72 70 20 43 6C 61 69 6D 73 20 26 20 43 6F 6E 74 + 72 20 43 6F 6F 72 64 02 00 00 44 52 03 00 00 31 + 37 37 12 00 00 47 72 6F 75 70 20 44 61 74 61 20 + 4F 66 66 69 63 65 72 02 00 00 52 4E 02 00 00 52 + 45 03 00 00 31 38 34 13 00 00 4C 65 69 74 65 72 + 20 52 65 74 72 6F 2F 43 52 45 53 54 41 01 00 00 + 46 02 00 00 4C 41 02 00 00 49 54 03 00 00 32 36 + 32 17 00 00 53 65 6E 69 6F 72 20 41 70 70 6C 69 + 63 2E 20 45 6E 67 69 6E 65 65 72 02 00 00 46 44 + 03 00 00 32 36 35 03 00 00 32 36 37 02 00 00 4F + 50 03 00 00 32 36 38 12 00 00 50 72 6F 64 75 63 + 74 69 6F 6E 20 50 6C 61 6E 6E 65 72 03 00 00 4D + 58 4E 02 00 00 4D 53 03 00 00 32 36 39 0F 00 00 + 53 79 73 74 65 6D 20 45 6E 67 69 6E 65 65 72 03 + 00 00 32 37 35 0D 00 00 49 54 2D 43 6F 6E 73 75 + 6C 74 61 6E 74 03 00 00 32 38 30 02 00 00 49 4D + 03 00 00 32 38 31 03 00 00 42 52 4C 03 00 00 32 + 38 36 0F 00 00 53 79 73 74 65 6D 20 42 65 74 72 + 65 75 65 72 12 00 00 47 72 6C 2E 20 53 79 73 74 + 65 6D 20 43 6F 6E 74 72 2E 03 00 00 33 32 36 02 + 00 00 43 52 03 00 00 33 33 35 17 00 00 41 63 63 + 6F 75 6E 74 61 6E 74 20 53 75 62 73 69 64 69 61 + 72 69 65 73 02 00 00 4C 4F 03 00 00 33 33 39 0E + 00 00 41 4C 2D 41 73 73 69 73 74 65 6E 74 69 6E + 02 00 00 43 44 03 00 00 33 34 30 15 00 00 43 6F + 6E 73 75 6C 74 61 6E 74 20 4F 72 67 2E 20 54 6F + 6F 6C 73 03 00 00 33 34 34 02 00 00 44 45 03 00 + 00 33 36 30 19 00 00 42 65 61 75 66 74 72 61 67 + 74 65 72 20 4A 75 6E 69 6F 72 20 50 6F 77 65 72 + 03 00 00 33 36 35 02 00 00 49 44 03 00 00 33 36 + 37 0A 00 00 53 65 6B 72 65 74 E4 72 69 6E 02 00 + 00 42 4C 03 00 00 33 37 35 17 00 00 42 65 74 72 + 69 65 62 73 74 65 63 68 6E 69 6B 65 72 20 48 4C + 4B 4B 53 03 00 00 33 39 35 19 00 00 47 72 6C 2E + 53 74 61 62 73 74 65 6C 6C 65 20 53 69 63 68 65 + 72 68 65 69 74 03 00 00 33 39 37 0F 00 00 50 6F + 73 74 61 73 73 69 73 74 65 6E 74 69 6E 03 00 00 + 34 32 34 02 00 00 52 42 03 00 00 34 33 32 03 00 + 00 34 35 36 19 00 00 48 65 61 64 20 6F 66 20 49 + 6E 64 69 61 2F 4D 69 64 64 6C 65 20 45 61 73 74 + 02 00 00 42 53 03 00 00 34 36 32 0D 00 00 48 65 + 61 64 20 6F 66 20 4C 41 2F 42 53 02 00 00 4C 45 + 02 00 00 41 53 03 00 00 34 36 33 09 00 00 53 65 + 63 72 65 74 61 72 79 03 00 00 34 37 34 19 00 00 + 41 64 6D 69 6E 69 73 74 72 61 74 69 6F 6E 20 53 + 75 70 65 72 76 69 73 6F 72 02 00 00 4C 4E 03 00 + 00 34 38 30 03 00 00 34 38 35 19 00 00 53 65 6E + 2E 20 55 6E 64 65 72 77 72 69 74 69 6E 67 20 43 + 6F 6E 73 75 6C 74 03 00 00 43 4F 42 03 00 00 34 + 38 36 02 00 00 46 53 03 00 00 34 38 37 19 00 00 + 48 65 61 64 20 6F 66 20 46 69 6E 61 6E 63 2E 20 + 53 6F 6C 75 74 69 6F 6E 73 03 00 00 35 30 36 03 + 00 00 35 31 33 02 00 00 4E 4F 03 00 00 35 36 38 + 16 00 00 53 65 6E 69 6F 72 20 41 63 63 6F 75 6E + 74 20 4D 61 6E 61 67 65 72 02 00 00 52 52 02 00 + 00 52 4F 03 00 00 35 37 34 16 00 00 41 73 73 2E + 20 4F 70 65 72 61 74 69 6F 6E 73 20 43 6F 6F 72 + 64 2E 03 00 00 35 37 39 03 00 00 36 30 30 03 00 + 00 36 30 35 19 00 00 42 75 73 69 6E 65 73 73 20 + 43 6F 6E 74 69 6E 75 69 74 79 20 4D 67 6D 74 2E + 03 00 00 36 30 37 03 00 00 36 30 39 11 00 00 52 + 65 70 6F 72 74 69 6E 67 20 53 75 70 70 6F 72 74 + 01 00 00 4C 03 00 00 36 31 35 18 00 00 55 57 20 + 4D 61 6E 61 67 65 72 20 46 61 63 2E 20 43 61 73 + 75 61 6C 74 79 03 00 00 59 65 73 03 00 00 36 31 + 39 19 00 00 48 65 61 64 20 6F 66 20 4D 65 64 69 + 63 6F 2D 41 63 74 2E 20 53 65 72 76 2E 02 00 00 + 43 41 03 00 00 36 32 34 17 00 00 48 65 61 64 20 + 52 65 63 6F 72 64 73 20 4D 61 6E 61 67 65 6D 65 + 6E 74 04 00 00 32 30 34 34 02 00 00 52 43 03 00 + 00 36 33 33 16 00 00 47 72 75 70 70 65 6E 6C 65 + 69 74 65 72 20 43 61 73 75 61 6C 74 79 04 00 00 + 53 49 54 43 03 00 00 36 33 38 0B 00 00 4C 65 69 + 74 65 72 20 53 49 54 43 03 00 00 36 34 31 10 00 + 00 41 62 74 65 69 6C 75 6E 67 73 6C 65 69 74 65 + 72 03 00 00 36 38 35 0E 00 00 4C 65 69 74 65 72 + 20 53 74 61 62 20 4C 4F 02 00 00 4C 54 03 00 00 + 37 30 30 16 00 00 41 64 6D 69 6E 69 73 74 72 61 + 74 69 6F 6E 20 53 75 70 70 6F 72 74 03 00 00 37 + 31 35 0D 00 00 54 4C 20 48 61 75 73 64 69 65 6E + 73 74 03 00 00 37 33 31 11 00 00 53 79 73 74 65 + 6D 20 43 6F 6E 74 72 6F 6C 6C 65 72 02 00 00 47 + 53 02 00 00 4B 48 03 00 00 37 34 33 14 00 00 4B + FC 63 68 65 6E 6D 69 74 61 72 62 65 69 74 65 72 + 2F 69 6E 03 00 00 37 34 35 19 00 00 54 65 61 6D + 6C 65 69 74 65 72 69 6E 20 4B 75 72 69 65 72 64 + 69 65 6E 73 74 03 00 00 37 35 37 04 00 00 4B 6F + 63 68 03 00 00 37 36 31 18 00 00 53 65 72 76 69 + 63 65 66 61 63 68 6D 69 74 61 72 62 65 69 74 65 + 72 69 6E 03 00 00 37 39 33 19 00 00 52 6F 6F 6D + 73 65 72 76 69 63 65 6D 69 74 61 72 62 65 69 74 + 65 72 2F 69 6E 03 00 00 38 39 36 03 00 00 39 31 + 30 0D 00 00 41 4C 2D 53 65 6B 72 65 74 E4 72 69 + 6E 03 00 00 39 32 37 10 00 00 53 61 63 68 62 65 + 61 72 62 65 69 74 65 72 69 6E 03 00 00 39 33 37 + 13 00 00 4C 65 69 74 65 72 20 47 65 67 65 6E 61 + 6C 69 6D 65 6E 74 03 00 00 39 37 36 17 00 00 50 + 4C 20 49 6E 66 72 61 73 74 72 75 63 74 75 72 65 + 20 50 72 6F 6A 2E 02 00 00 49 50 03 00 00 39 37 + 37 03 00 00 39 38 32 11 00 00 47 72 6C 2E 20 42 + 65 74 72 69 65 62 20 45 6E 67 65 04 00 00 31 30 + 31 33 10 00 00 54 72 61 69 6E 69 6E 67 20 4F 66 + 66 69 63 65 72 04 00 00 31 30 33 32 04 00 00 31 + 30 34 34 18 00 00 4C 65 69 74 65 72 20 42 65 74 + 72 69 65 62 2F 45 72 68 61 6C 74 75 6E 67 04 00 + 00 31 30 34 35 26 00 00 4D 65 6D 62 65 72 20 6F + 66 20 74 68 65 20 50 4F 49 2D 48 53 53 46 20 45 + 78 65 63 75 74 69 76 65 20 42 6F 61 72 64 04 00 + 00 31 30 35 37 04 00 00 31 30 36 32 1E 00 00 44 + 65 70 75 74 79 20 43 68 69 65 66 20 45 78 65 63 + 75 74 69 76 65 20 4F 66 66 69 63 65 72 04 00 00 + 31 30 38 30 15 00 00 4C 65 69 74 65 72 20 41 6B + 74 69 65 6E 72 65 67 69 73 74 65 72 04 00 00 31 + 30 38 31 02 00 00 46 4D 04 00 00 31 30 38 32 07 + 00 00 41 63 74 75 61 72 79 02 00 00 53 46 04 00 + 00 31 30 39 37 12 00 00 48 65 61 64 20 44 69 76 + 69 73 69 6F 6E 61 6C 20 48 52 04 00 00 31 30 39 + 39 19 00 00 48 65 61 64 20 6F 66 20 47 72 6F 75 + 70 20 50 4D 20 43 61 73 75 61 6C 74 79 02 00 00 + 49 4C 04 00 00 31 31 31 37 13 00 00 41 75 73 73 + 65 6E 73 74 65 6C 6C 65 6E 6C 65 69 74 65 72 04 + 00 00 31 34 34 38 04 00 00 31 34 35 36 0D 00 00 + 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00 + 31 34 36 30 0E 00 00 53 61 63 68 62 65 61 72 62 + 65 69 74 65 72 04 00 00 31 34 36 36 02 00 00 47 + 52 04 00 00 31 34 37 36 19 00 00 53 65 6B 74 69 + 6F 6E 73 6C 2E 20 47 72 70 2E 20 52 65 70 6F 72 + 74 69 6E 67 03 00 00 43 48 46 04 00 00 31 34 38 + 34 02 00 00 53 55 04 00 00 31 34 39 30 12 00 00 + 50 6C 61 6E 65 72 2F 4B 6F 6F 72 64 69 6E 61 74 + 6F 72 04 00 00 31 34 39 39 11 00 00 4C 65 69 74 + 65 72 20 4F 70 65 72 61 74 69 6F 6E 73 04 00 00 + 31 35 30 37 04 00 00 31 35 32 35 16 00 00 53 79 + 73 74 65 6D 20 50 72 6F 7A 65 73 73 20 4D 61 6E + 61 67 65 72 04 00 00 31 35 34 31 02 00 00 52 59 + 02 00 00 52 4D 04 00 00 31 35 35 30 19 00 00 48 + 65 61 64 20 6F 66 20 52 69 73 6B 20 4D 67 74 20 + 53 65 72 76 69 63 65 73 02 00 00 54 43 04 00 00 + 31 35 35 32 04 00 00 31 35 37 32 12 00 00 55 73 + 65 72 20 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 + 02 00 00 46 41 04 00 00 31 35 37 34 16 00 00 53 + 61 63 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 + 4B 61 73 73 65 04 00 00 31 35 39 39 04 00 00 31 + 36 31 31 04 00 00 31 36 32 32 18 00 00 4D 65 6D + 62 65 72 20 6F 66 20 4C 26 48 20 45 78 65 63 2E + 42 6F 61 72 64 02 00 00 44 4D 04 00 00 31 36 32 + 33 12 00 00 47 72 6C 2E 20 44 72 75 63 6B 76 6F + 72 73 74 75 66 65 02 00 00 49 4F 04 00 00 31 36 + 36 39 17 00 00 4B 6F 6E 7A 65 72 6E 2D 49 6E 66 + 6F 72 6D 2E 20 45 69 6E 6B 61 75 66 02 00 00 47 + 41 04 00 00 31 36 37 30 04 00 00 31 36 38 35 14 + 00 00 47 72 75 70 70 65 6E 6C 65 69 74 65 72 69 + 6E 20 46 69 62 75 04 00 00 31 37 30 32 04 00 00 + 31 37 30 39 04 00 00 31 37 32 35 14 00 00 46 61 + 63 68 73 70 65 7A 69 61 6C 69 73 74 20 52 65 74 + 72 6F 03 00 00 41 52 53 04 00 00 31 37 33 36 19 + 00 00 4D 61 6E 61 67 65 72 20 54 72 61 69 6E 69 + 6E 67 26 44 65 76 65 6C 6F 70 6D 04 00 00 31 37 + 34 39 0F 00 00 50 72 6F 6A 65 63 74 20 4D 61 6E + 61 67 65 72 04 00 00 31 37 35 39 04 00 00 31 37 + 37 32 17 00 00 4F 70 65 72 61 74 6F 72 20 4B 6F + 70 69 65 72 7A 65 6E 74 72 61 6C 65 04 00 00 31 + 37 38 38 04 00 00 31 38 30 32 02 00 00 43 4C 04 + 00 00 31 38 30 33 11 00 00 54 65 61 6D 20 4C 65 + 61 64 65 72 20 4B 56 2F 55 56 04 00 00 31 38 33 + 38 0D 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 65 + 72 02 00 00 49 52 04 00 00 31 38 35 36 04 00 00 + 31 38 36 37 13 00 00 53 61 63 68 62 65 61 72 62 + 65 69 74 65 72 69 6E 20 50 56 04 00 00 31 38 36 + 38 19 00 00 54 65 61 6D 6C 65 69 74 65 72 20 47 + 65 62 E4 75 64 65 74 65 63 68 6E 69 6B 04 00 00 + 31 38 39 31 18 00 00 42 65 72 65 69 63 68 73 6C + 65 69 74 65 72 20 52 65 70 6F 72 74 69 6E 67 02 + 00 00 4C 43 04 00 00 31 39 30 30 12 00 00 53 65 + 6E 2E 20 4C 65 67 61 6C 20 43 6F 75 6E 73 65 6C + 04 00 00 31 39 30 34 04 00 00 31 39 30 35 0D 00 + 00 52 61 75 6D 70 66 6C 65 67 65 72 69 6E 04 00 + 00 31 39 32 34 04 00 00 31 39 33 36 0A 00 00 49 + 6E 73 74 72 75 63 74 6F 72 04 00 00 31 39 33 39 + 19 00 00 4D 61 6E 61 67 65 72 20 54 72 61 69 6E + 69 6E 67 20 43 6F 6E 63 65 70 74 73 01 00 00 57 + 02 00 00 50 49 04 00 00 31 39 34 32 11 00 00 50 + 6F 72 74 66 6F 6C 69 6F 20 4D 61 6E 61 67 65 72 + 04 00 00 31 39 35 31 0C 00 00 43 61 73 68 20 4D + 61 6E 61 67 65 72 04 00 00 31 39 35 34 04 00 00 + 31 39 36 36 04 00 00 31 39 38 32 13 00 00 50 72 + 6F 64 75 63 74 73 2F 47 75 69 64 65 6C 69 6E 65 + 73 04 00 00 31 39 39 30 04 00 00 31 39 39 36 04 + 00 00 32 30 30 36 11 00 00 45 78 70 65 72 74 65 + 20 4B 61 74 61 6B 75 6D 75 6C 04 00 00 32 30 33 + 32 17 00 00 54 65 61 6D 6C 65 69 74 65 72 20 42 + 75 63 68 62 69 6E 64 65 72 65 69 04 00 00 32 30 + 33 34 16 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 + 65 72 20 46 61 63 68 61 62 74 2E 02 00 00 43 43 + 19 00 00 48 65 61 64 20 4D 65 64 69 61 20 43 6F + 6D 6D 75 6E 69 63 61 74 69 6F 6E 73 04 00 00 32 + 30 36 30 02 00 00 52 58 02 00 00 41 4C 04 00 00 + 32 30 36 31 18 00 00 48 65 61 64 20 6F 66 20 43 + 49 52 4D 26 52 65 69 6E 2E 20 53 75 70 70 2E 04 + 00 00 32 30 36 33 04 00 00 32 30 36 37 19 00 00 + 4C 65 69 74 65 72 20 42 65 74 72 69 65 62 73 6C + 69 65 67 65 6E 73 63 68 2E 02 00 00 49 58 04 00 + 00 32 30 37 31 04 00 00 32 30 37 37 15 00 00 49 + 6E 66 6F 72 6D 61 74 69 6B 20 43 6F 6E 73 75 6C + 74 61 6E 74 04 00 00 32 30 38 30 13 00 00 53 65 + 63 72 65 74 61 72 79 20 44 69 76 2E 20 48 65 61 + 64 03 00 00 43 41 44 02 00 00 44 4F 04 00 00 32 + 30 38 32 19 00 00 48 65 61 64 20 44 69 73 63 6F + 6E 74 69 6E 75 65 64 20 4F 70 65 72 61 74 2E 04 + 00 00 32 30 38 37 04 00 00 32 30 39 31 04 00 00 + 32 31 31 32 04 00 00 32 31 33 38 17 00 00 53 65 + 6E 69 6F 72 20 42 75 73 69 6E 65 73 73 20 41 6E + 61 6C 79 73 74 04 00 00 32 31 34 33 04 00 00 32 + 31 34 39 17 00 00 52 65 67 69 6F 6E 61 6C 20 4D + 61 6E 61 67 65 72 20 4C 26 48 20 4C 54 04 00 00 + 32 31 39 39 0E 00 00 43 6C 69 65 6E 74 20 4D 61 + 6E 61 67 65 72 04 00 00 32 32 31 31 18 00 00 4C + 65 69 74 65 72 20 43 75 73 74 6F 6D 65 72 20 53 + 65 72 76 69 63 65 73 04 00 00 32 32 31 34 04 00 + 00 32 32 32 30 19 00 00 48 52 2D 4D 49 53 2D 26 + 20 50 34 30 30 2D 41 70 70 6C 69 63 61 74 69 6F + 6E 04 00 00 32 32 32 37 13 00 00 54 65 63 68 6E + 69 63 61 6C 20 53 75 70 70 6F 72 74 65 72 04 00 + 00 32 32 35 30 19 00 00 54 72 61 69 6E 69 6E 67 + 2D 20 26 20 50 72 6F 6A 65 63 74 6D 61 6E 61 67 + 2E 04 00 00 32 32 35 31 19 00 00 44 65 70 2E 48 + 65 61 64 20 6F 66 20 47 72 6F 75 70 20 50 4D 20 + 50 72 6F 70 04 00 00 32 32 35 33 13 00 00 47 72 + 6C 2E 20 47 6C 6F 62 61 6C 20 53 75 70 70 6F 72 + 74 04 00 00 32 32 39 35 11 00 00 54 4C 20 48 61 + 75 73 77 69 72 74 73 63 68 61 66 74 04 00 00 32 + 32 39 36 04 00 00 32 33 30 32 04 00 00 32 33 31 + 38 0D 00 00 52 69 73 69 6B 6F 65 78 70 65 72 74 + 65 04 00 00 32 33 32 33 04 00 00 32 33 32 35 04 + 00 00 32 33 33 32 04 00 00 32 33 34 31 19 00 00 + 41 63 63 6F 75 6E 74 61 6E 74 20 53 70 65 63 69 + 61 6C 20 42 75 73 69 6E 2E 04 00 00 32 33 37 37 + 11 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 65 72 + 20 4D 49 50 04 00 00 32 33 38 36 19 00 00 53 65 + 6E 2E 43 6C 61 69 6D 73 20 49 6E 66 2E 53 70 65 + 63 69 61 6C 69 73 74 04 00 00 32 34 32 37 16 00 + 00 47 72 6C 2E 20 49 6E 73 74 61 6C 6C 2E 20 53 + 65 72 76 69 63 65 73 04 00 00 32 34 33 36 17 00 + 00 48 65 61 64 20 6F 66 20 43 6C 61 69 6D 73 20 + 53 65 72 76 69 63 65 73 04 00 00 32 34 35 33 16 + 00 00 42 4C 20 47 72 6F 75 70 20 44 61 74 61 20 + 53 65 72 76 69 63 65 73 04 00 00 32 34 35 36 04 + 00 00 32 34 36 39 19 00 00 47 72 61 66 69 73 63 + 68 65 72 20 53 61 63 68 62 65 61 72 62 65 69 74 + 65 72 04 00 00 32 34 38 31 16 00 00 55 57 2F 50 + 72 6F 64 75 63 74 20 63 6F 6E 74 72 6F 6C 6C 69 + 6E 67 02 00 00 49 55 04 00 00 32 34 39 39 14 00 + 00 41 70 70 6C 69 63 61 74 69 6F 6E 20 45 6E 67 + 69 6E 65 65 72 04 00 00 32 35 32 32 04 00 00 32 + 35 34 30 0B 00 00 55 6E 64 65 72 77 72 69 74 65 + 72 04 00 00 32 35 34 35 04 00 00 32 35 36 34 04 + 00 00 32 35 36 35 04 00 00 32 35 36 36 04 00 00 + 32 35 37 33 04 00 00 32 35 38 30 15 00 00 46 61 + 63 68 72 65 66 65 72 65 6E 74 20 43 61 73 75 61 + 6C 74 79 02 00 00 43 42 04 00 00 32 35 38 31 10 + 00 00 49 6E 74 2E 20 41 73 73 69 67 6E 6D 65 6E + 74 73 04 00 00 32 35 38 39 02 00 00 54 55 04 00 + 00 32 36 30 38 04 00 00 32 36 31 30 17 00 00 4C + 65 69 74 65 72 69 6E 20 41 64 6D 69 6E 69 73 74 + 72 61 74 69 6F 6E 04 00 00 32 36 33 32 04 00 00 + 32 36 34 34 19 00 00 53 74 76 2E 20 4C 65 69 74 + 65 72 20 41 6B 74 69 65 6E 72 65 67 69 73 74 2E + 04 00 00 32 36 34 35 04 00 00 32 36 35 33 19 00 + 00 47 72 75 70 70 65 6E 6C 65 69 74 65 72 20 52 + 65 69 73 65 64 69 65 6E 73 74 04 00 00 32 36 37 + 31 18 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 65 + 72 69 6E 20 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3 new file mode 100755 index 0000000000..461dfae5e4 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3 @@ -0,0 +1,515 @@ + 3C 00 1C 20 00 46 61 63 68 61 62 74 + 2E 04 00 00 32 36 37 33 12 00 00 53 65 72 76 69 + 63 65 6D 69 74 61 72 62 65 69 74 65 72 04 00 00 + 32 36 37 34 04 00 00 32 36 38 34 04 00 00 32 37 + 31 31 18 00 00 4C 65 69 74 65 72 20 55 73 65 72 + 20 54 72 61 69 6E 2E 20 53 65 72 76 2E 04 00 00 + 32 37 31 37 0E 00 00 54 65 6C 65 6F 70 65 72 61 + 74 72 69 63 65 04 00 00 32 37 31 39 04 00 00 32 + 37 33 31 19 00 00 48 65 61 64 20 6F 66 20 52 65 + 69 6E 73 75 72 61 6E 63 65 20 54 6F 6F 6C 73 04 + 00 00 32 37 33 32 12 00 00 50 72 6F 64 75 63 74 + 20 43 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 32 37 + 34 33 04 00 00 32 37 35 35 12 00 00 4F 70 65 72 + 61 74 69 6F 6E 73 20 4F 66 66 69 63 65 72 04 00 + 00 32 37 36 31 18 00 00 47 72 6C 2E 20 53 79 73 + 74 65 6D 20 41 64 6D 69 6E 69 73 74 72 61 74 2E + 02 00 00 52 4B 04 00 00 32 37 36 38 16 00 00 48 + 65 61 64 20 6F 66 20 43 6F 6D 6D 75 6E 69 63 61 + 74 69 6F 6E 73 04 00 00 32 37 36 39 04 00 00 32 + 37 37 32 04 00 00 32 37 37 37 04 00 00 32 37 38 + 33 0D 00 00 47 4C 2D 53 65 6B 72 65 74 E4 72 69 + 6E 04 00 00 32 37 38 34 04 00 00 32 37 38 37 19 + 00 00 47 72 6C 2E 20 4E 57 20 52 65 73 65 61 72 + 63 68 2F 44 65 76 65 6C 6F 70 6D 04 00 00 32 37 + 38 38 04 00 00 32 37 38 39 13 00 00 52 65 69 6E + 73 75 72 61 6E 63 65 20 41 6E 61 6C 79 73 74 04 + 00 00 32 38 30 37 11 00 00 44 65 70 75 74 79 20 + 48 65 61 64 20 6F 66 20 43 41 04 00 00 32 38 31 + 37 18 00 00 46 69 6E 2E 20 4D 61 72 6B 65 74 20 + 52 69 73 6B 20 41 6E 61 6C 79 73 74 04 00 00 32 + 38 31 38 19 00 00 44 65 70 2E 20 48 65 61 64 20 + 54 65 63 68 6E 2E 20 54 72 61 69 6E 69 6E 67 04 + 00 00 32 38 32 36 02 00 00 50 4F 04 00 00 32 38 + 32 39 18 00 00 50 72 6F 6A 65 63 74 20 4D 67 6D + 74 2E 20 43 6F 6E 73 75 6C 74 61 6E 74 04 00 00 + 32 38 33 35 0C 00 00 52 E9 63 65 70 74 69 6F 6E + 69 73 74 04 00 00 32 38 33 36 04 00 00 32 38 33 + 37 13 00 00 53 74 76 2E 20 53 65 6B 74 69 6F 6E + 73 6C 65 69 74 65 72 04 00 00 32 38 34 37 14 00 + 00 54 65 63 68 6E 69 63 61 6C 20 41 63 63 6F 75 + 6E 74 61 6E 74 02 00 00 52 55 04 00 00 32 38 35 + 32 0E 00 00 43 68 69 65 66 20 45 6E 67 69 6E 65 + 65 72 04 00 00 32 38 35 34 19 00 00 48 65 61 64 + 20 6F 66 20 47 72 6F 75 70 20 50 4D 20 45 6E 67 + 69 6E 65 65 2E 04 00 00 32 38 36 33 19 00 00 54 + 4C 20 48 61 75 73 2D 20 26 20 42 65 74 72 69 65 + 62 73 64 69 65 6E 73 74 04 00 00 32 38 39 32 0C + 00 00 41 56 2D 54 65 63 68 6E 69 6B 65 72 04 00 + 00 32 38 39 39 0F 00 00 42 65 74 72 69 65 62 73 + 67 E4 72 74 6E 65 72 04 00 00 32 39 32 35 19 00 + 00 48 65 61 64 20 6F 66 20 4C 65 67 61 6C 26 43 + 6C 61 69 6D 73 20 53 65 72 76 02 00 00 43 58 04 + 00 00 32 39 32 39 0E 00 00 48 65 61 64 20 6F 66 + 20 45 76 65 6E 74 73 04 00 00 32 39 33 31 0A 00 + 00 43 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 32 39 + 33 32 04 00 00 32 39 33 33 04 00 00 32 39 34 30 + 14 00 00 50 4C 20 52 56 2D 54 65 63 68 6E 2E 20 + 53 79 73 74 65 6D 65 04 00 00 32 39 34 31 0C 00 + 00 4C 65 69 74 65 72 20 4B 61 73 73 65 04 00 00 + 32 39 35 38 02 00 00 48 52 04 00 00 32 39 36 35 + 19 00 00 48 75 6D 61 6E 20 52 65 73 6F 75 72 63 + 65 73 20 41 73 73 69 73 74 61 6E 74 04 00 00 32 + 39 36 38 19 00 00 48 65 61 64 20 4D 61 72 6B 65 + 74 69 6E 67 20 52 FC 73 63 68 6C 69 6B 6F 6E 04 + 00 00 32 39 37 33 14 00 00 43 6F 75 72 73 65 20 + 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00 + 32 39 38 31 13 00 00 4D 61 72 6B 65 74 69 6E 67 + 20 41 73 73 69 73 74 61 6E 74 02 00 00 44 43 04 + 00 00 32 39 38 34 0E 00 00 42 65 72 65 69 63 68 + 73 6C 65 69 74 65 72 04 00 00 32 39 38 38 15 00 + 00 53 65 6E 69 6F 72 20 52 65 69 6E 73 2E 20 41 + 6E 61 6C 79 73 74 04 00 00 32 39 39 37 12 00 00 + 50 72 6F 6A 65 63 74 20 4C 65 61 64 65 72 20 46 + 53 41 04 00 00 32 39 39 38 04 00 00 33 30 30 31 + 04 00 00 33 30 31 32 0E 00 00 54 65 61 6D 20 4C + 65 61 64 65 72 20 46 54 01 00 00 42 04 00 00 33 + 30 35 32 15 00 00 47 72 6C 2E 20 43 6F 72 70 6F + 72 61 74 65 20 44 65 73 69 67 6E 04 00 00 33 30 + 35 38 17 00 00 55 57 20 46 61 63 75 6C 74 61 74 + 69 76 65 20 50 72 6F 70 65 72 74 79 04 00 00 33 + 30 36 32 02 00 00 46 43 04 00 00 33 30 37 37 0B + 00 00 48 65 61 64 20 6F 66 20 43 4F 43 04 00 00 + 33 30 39 31 04 00 00 33 31 30 34 0F 00 00 47 65 + 73 63 68 E4 66 74 73 6C 65 69 74 65 72 04 00 00 + 33 31 31 35 04 00 00 33 31 33 34 04 00 00 33 31 + 33 37 19 00 00 53 65 6E 2E 41 63 63 6F 75 6E 74 + 61 6E 74 20 47 72 6F 75 70 20 52 65 70 2E 04 00 + 00 33 31 33 38 10 00 00 53 65 6B 74 69 6F 6E 73 + 6C 65 69 74 65 72 69 6E 04 00 00 33 31 34 37 04 + 00 00 33 31 35 35 04 00 00 33 31 35 36 19 00 00 + 48 65 61 64 20 6F 66 20 55 57 2F 50 72 6F 64 75 + 63 74 20 43 6F 6E 74 72 2E 04 00 00 33 31 37 34 + 04 00 00 33 31 38 37 04 00 00 33 31 39 37 02 00 + 00 49 42 04 00 00 33 32 32 34 02 00 00 49 46 04 + 00 00 33 32 32 36 17 00 00 49 6E 66 6F 72 6D 61 + 74 69 6F 6E 73 2D 53 70 65 7A 69 61 6C 69 73 74 + 04 00 00 33 32 32 38 12 00 00 50 6C 61 6E 6E 65 + 72 2F 43 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 33 + 32 33 37 10 00 00 41 64 6D 69 6E 2E 20 41 73 73 + 69 73 74 61 6E 74 04 00 00 33 32 35 39 0F 00 00 + 43 6F 6F 72 64 69 6E 61 74 6F 72 20 42 43 4D 04 + 00 00 33 32 36 30 18 00 00 50 72 6F 70 65 72 74 + 79 20 50 72 6F 64 75 63 74 20 4D 61 6E 61 67 65 + 72 04 00 00 33 32 36 37 0B 00 00 43 4F 43 20 4D + 61 6E 61 67 65 72 04 00 00 33 32 39 37 16 00 00 + 4C 65 69 74 65 72 20 49 6E 66 6F 72 6D 61 74 69 + 6B 20 53 74 61 62 04 00 00 33 33 30 34 19 00 00 + 41 73 73 69 73 74 61 6E 74 20 41 63 63 6F 75 6E + 74 20 4D 61 6E 61 67 65 72 04 00 00 33 33 30 36 + 13 00 00 47 72 6C 2E 20 55 73 65 72 20 48 65 6C + 70 20 44 65 73 6B 04 00 00 33 33 31 36 04 00 00 + 33 33 32 33 04 00 00 33 33 32 36 04 00 00 33 33 + 32 37 0F 00 00 41 63 63 6F 75 6E 74 20 4D 61 6E + 61 67 65 72 04 00 00 33 33 32 38 04 00 00 33 33 + 33 33 01 00 00 45 04 00 00 33 33 34 32 18 00 00 + 48 65 61 64 20 6F 66 20 50 72 6F 64 2E 2F 47 75 + 69 64 65 6C 69 6E 65 73 04 00 00 33 33 34 39 04 + 00 00 33 33 35 30 04 00 00 33 33 35 31 04 00 00 + 33 33 35 34 14 00 00 45 69 6E 72 69 63 68 74 75 + 6E 67 73 70 6C 61 6E 65 72 69 6E 04 00 00 33 33 + 36 30 02 00 00 42 49 04 00 00 33 33 36 32 04 00 + 00 33 33 37 36 04 00 00 33 33 37 39 04 00 00 33 + 33 38 31 04 00 00 33 34 32 31 14 00 00 48 65 61 + 64 20 6F 66 20 50 72 69 63 69 6E 67 2F 44 61 74 + 61 04 00 00 33 34 36 34 19 00 00 48 65 61 64 20 + 47 72 70 2E 20 4D 61 72 6B 65 74 43 6F 6D 6D 75 + 6E 69 63 2E 04 00 00 33 34 36 38 04 00 00 33 34 + 36 39 19 00 00 42 4C 20 44 61 74 61 20 43 6F 6D + 6D 75 6E 69 63 2E 20 53 79 73 74 65 6D 73 04 00 + 00 33 34 37 31 16 00 00 4C 69 6E 67 65 72 69 65 + 6D 69 74 61 72 62 65 69 74 65 72 2F 69 6E 04 00 + 00 33 34 38 35 16 00 00 53 61 63 68 62 65 61 72 + 62 2E 20 50 6F 73 74 64 69 65 6E 73 74 65 04 00 + 00 33 34 38 38 11 00 00 43 6C 61 69 6D 73 20 4D + 61 6E 61 67 65 6D 65 6E 74 04 00 00 33 34 39 30 + 17 00 00 54 65 63 68 6E 69 73 63 68 65 72 20 4D + 69 74 61 72 62 65 69 74 65 72 04 00 00 33 34 39 + 31 0D 00 00 42 65 74 72 69 65 62 73 6D 61 6C 65 + 72 04 00 00 33 35 30 36 04 00 00 33 35 30 37 04 + 00 00 33 35 31 31 17 00 00 43 68 69 65 66 20 45 + 78 65 63 75 74 69 76 65 20 4F 66 66 69 63 65 72 + 04 00 00 33 35 32 30 04 00 00 33 35 32 38 11 00 + 00 42 65 74 72 69 65 62 73 74 65 63 68 6E 69 6B + 65 72 04 00 00 33 35 33 30 04 00 00 33 35 33 32 + 02 00 00 49 41 04 00 00 33 35 34 30 0E 00 00 53 + 65 6E 69 6F 72 20 41 75 64 69 74 6F 72 04 00 00 + 33 35 34 33 12 00 00 50 72 6F 6A 65 6B 74 6D 69 + 74 61 72 62 65 69 74 65 72 04 00 00 33 35 34 36 + 05 00 00 38 30 34 33 30 20 00 00 52 65 73 65 61 + 72 63 68 20 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 + 53 70 65 63 69 61 6C 69 73 74 2C 05 00 00 31 30 + 38 34 35 1E 00 00 47 72 6F 75 70 20 43 6C 61 69 + 6D 73 20 61 6E 64 20 43 6F 6E 74 72 61 63 74 20 + 4D 61 6E 61 05 00 00 31 31 31 34 33 05 00 00 38 + 31 38 31 39 12 00 00 52 65 73 65 61 72 63 68 20 + 41 73 73 69 73 74 61 6E 74 05 00 00 38 30 32 33 + 36 17 00 00 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 + 53 70 65 63 69 61 6C 69 73 74 2C 05 00 00 31 32 + 34 31 37 03 00 00 33 35 33 02 00 00 53 47 09 00 + 00 53 69 6E 67 61 70 6F 72 65 03 00 00 31 35 30 + 15 00 00 47 65 6E 65 72 61 6C 20 41 64 6D 69 6E + 69 73 74 72 61 74 6F 72 03 00 00 31 35 31 09 00 + 00 4D 65 73 73 65 6E 67 65 72 02 00 00 41 4F 02 + 00 00 54 52 02 00 00 37 33 19 00 00 4D 67 72 20 + 54 72 61 69 6E 2E 20 26 20 43 6C 69 65 6E 74 20 + 53 65 72 76 2E 02 00 00 41 43 02 00 00 4D 41 04 + 00 00 31 37 39 31 12 00 00 4D 61 72 69 6E 65 20 + 55 6E 64 65 72 77 72 69 74 65 72 02 00 00 54 57 + 06 00 00 54 61 69 70 65 69 03 00 00 32 32 35 06 + 00 00 44 72 69 76 65 72 02 00 00 4D 59 0C 00 00 + 4B 75 61 6C 61 20 4C 75 6D 70 75 72 03 00 00 33 + 34 36 12 00 00 41 63 63 6F 75 6E 74 73 20 45 78 + 65 63 75 74 69 76 65 02 00 00 41 4B 04 00 00 38 + 34 38 37 02 00 00 50 48 06 00 00 4D 61 6E 69 6C + 61 03 00 00 33 36 39 17 00 00 45 6E 67 69 6E 65 + 65 72 69 6E 67 20 55 6E 64 65 72 77 72 69 74 65 + 72 04 00 00 39 33 37 39 18 00 00 41 63 74 75 61 + 72 2E 20 26 20 50 72 6F 64 2E 20 43 6F 6E 74 72 + 6F 6C 2E 04 00 00 36 30 35 31 05 00 00 31 32 31 + 39 37 19 00 00 53 65 6E 69 6F 72 20 45 6E 65 72 + 67 79 20 55 6E 64 65 72 77 72 69 74 65 72 04 00 + 00 36 33 36 33 0E 00 00 45 6E 67 69 6E 65 65 72 + 69 6E 67 20 55 57 05 00 00 31 30 35 31 35 15 00 + 00 50 72 6F 70 65 72 74 79 20 55 6E 74 65 72 77 + 72 69 74 69 6E 67 04 00 00 38 35 39 30 17 00 00 + 4F 70 65 72 61 74 69 6F 6E 61 6C 20 43 6F 6E 74 + 72 6F 6C 6C 69 6E 67 02 00 00 45 54 04 00 00 32 + 38 31 32 03 00 00 34 38 39 14 00 00 50 72 6F 70 + 65 72 74 79 20 55 6E 64 65 72 77 72 69 74 65 72 + 04 00 00 33 38 38 30 04 00 00 33 32 30 32 18 00 + 00 48 65 61 64 20 44 43 45 4F 2F 43 6F 6D 6D 75 + 6E 69 63 61 74 69 6F 6E 73 04 00 00 35 37 35 33 + 19 00 00 43 61 73 75 61 6C 74 79 20 55 6E 64 65 + 72 77 72 69 74 69 6E 67 20 4D 67 72 04 00 00 36 + 35 31 32 17 00 00 44 69 76 69 73 69 6F 6E 61 6C + 20 43 6F 73 74 20 4D 61 6E 61 67 65 72 04 00 00 + 31 38 38 33 18 00 00 54 72 61 69 6E 2E 20 26 20 + 43 6C 69 65 6E 74 20 53 65 72 76 69 63 65 73 02 + 00 00 44 50 04 00 00 37 35 39 30 13 00 00 44 69 + 76 69 73 69 6F 6E 61 6C 20 50 6C 61 6E 6E 69 6E + 67 05 00 00 31 31 38 36 37 14 00 00 43 61 73 75 + 61 6C 74 79 20 55 6E 64 65 72 77 72 69 74 65 72 + 04 00 00 33 39 31 39 0D 00 00 44 69 76 69 73 69 + 6F 6E 61 6C 20 49 54 03 00 00 33 37 30 10 00 00 + 4D 65 73 73 65 6E 67 65 72 2F 44 72 69 76 65 72 + 03 00 00 35 37 31 04 00 00 38 36 31 34 19 00 00 + 4D 67 72 20 41 63 74 2E 20 26 20 50 72 6F 64 2E + 20 43 6F 6E 74 72 6F 6C 2E 03 00 00 33 37 31 18 + 00 00 41 64 6D 69 6E 69 73 74 72 61 74 69 76 65 + 20 41 73 73 69 73 74 61 6E 74 03 00 00 34 39 36 + 15 00 00 44 65 70 75 74 79 20 43 6C 69 65 6E 74 + 20 4D 61 6E 61 67 65 72 03 00 00 32 35 37 14 00 + 00 54 72 65 61 74 79 20 41 64 6D 69 6E 69 73 74 + 72 61 74 6F 72 03 00 00 31 35 35 1D 00 00 54 65 + 63 68 6E 2E 20 41 63 63 6F 75 6E 74 73 20 41 64 + 6D 69 6E 69 73 74 72 61 74 6F 72 02 00 00 54 48 + 07 00 00 42 61 6E 67 6B 6F 6B 0D 00 00 52 69 73 + 6B 20 45 6E 67 69 6E 65 65 72 03 00 00 35 36 36 + 14 00 00 46 69 6E 61 6E 63 69 61 6C 20 43 6F 6E + 74 72 6F 6C 6C 65 72 03 00 00 34 39 39 1D 00 00 + 43 6C 69 65 6E 74 20 4D 67 6D 74 26 46 69 6E 61 + 6E 63 69 61 6C 20 41 64 69 73 6F 72 79 03 00 00 + 33 30 39 14 00 00 53 65 6E 69 6F 72 20 52 69 73 + 6B 20 45 6E 67 69 6E 65 65 72 05 00 00 31 30 32 + 31 30 02 00 00 43 4E 07 00 00 42 65 69 6A 69 6E + 67 03 00 00 31 35 37 1D 00 00 53 65 63 72 65 74 + 61 72 79 20 74 6F 20 43 68 69 65 66 20 52 65 70 + 72 65 73 65 6E 74 2E 03 00 00 32 32 39 03 00 00 + 35 39 35 14 00 00 43 68 69 65 66 20 52 65 70 72 + 65 73 65 6E 74 61 74 69 76 65 03 00 00 32 32 38 + 12 00 00 54 72 65 61 74 79 20 55 6E 64 65 72 77 + 72 69 74 65 72 03 00 00 32 39 34 0E 00 00 43 6C + 61 69 6D 73 20 4D 61 6E 61 67 65 72 03 00 00 35 + 33 36 10 00 00 48 52 20 41 64 6D 69 6E 69 73 74 + 72 61 74 6F 72 14 00 00 4F 66 66 69 63 65 20 41 + 64 6D 69 6E 69 73 74 72 61 74 6F 72 03 00 00 35 + 37 32 03 00 00 31 35 39 1E 00 00 41 73 73 6F 63 + 69 61 74 65 2C 20 43 6F 72 70 6F 72 61 74 65 20 + 44 65 76 65 6C 6F 70 6D 2E 03 00 00 35 31 35 03 + 00 00 33 34 38 1C 00 00 41 73 73 69 73 74 61 6E + 74 20 74 6F 20 43 6C 69 65 6E 74 20 4D 67 74 20 + 54 65 61 6D 03 00 00 31 36 31 1A 00 00 52 65 67 + 69 6F 6E 61 6C 20 4D 61 72 69 6E 65 20 55 57 20 + 4D 61 6E 61 67 65 72 03 00 00 31 36 32 03 00 00 + 32 33 32 10 00 00 4F 66 66 69 63 65 20 41 73 73 + 69 73 74 61 6E 74 03 00 00 31 36 34 1A 00 00 43 + 6C 69 65 6E 74 20 43 6F 6F 72 64 69 6E 61 74 69 + 6F 6E 20 41 64 6D 69 6E 2E 03 00 00 32 33 33 19 + 00 00 41 73 73 74 2E 20 4D 61 6E 61 67 65 72 20 + 45 6E 67 69 6E 65 65 72 69 6E 67 04 00 00 38 35 + 35 35 03 00 00 31 36 35 1B 00 00 43 6C 69 65 6E + 74 20 52 65 6C 61 74 69 6F 6E 73 68 69 70 20 4D + 61 6E 61 67 65 72 03 00 00 31 36 37 1C 00 00 43 + 6C 69 65 6E 74 20 53 75 70 70 6F 72 74 20 41 64 + 6D 69 6E 69 73 74 72 61 74 6F 72 03 00 00 31 36 + 36 19 00 00 46 69 6E 61 6E 63 69 61 6C 20 41 63 + 63 6F 75 6E 74 73 20 41 64 6D 69 6E 2E 03 00 00 + 32 39 35 14 00 00 41 73 73 69 73 74 61 6E 74 20 + 41 63 63 6F 75 6E 74 61 6E 74 03 00 00 32 39 37 + 0F 00 00 45 44 50 20 43 6F 6F 72 64 69 6E 61 74 + 6F 72 08 00 00 53 68 61 6E 67 68 61 69 03 00 00 + 31 34 34 1A 00 00 52 65 70 72 65 73 65 6E 74 61 + 74 69 76 65 20 45 6E 67 69 6E 65 65 72 69 6E 67 + 03 00 00 33 37 33 1D 00 00 52 69 73 6B 20 45 6E + 67 69 6E 65 65 72 20 2F 49 54 20 43 6F 6F 72 64 + 69 6E 61 74 6F 72 03 00 00 33 37 34 14 00 00 41 + 63 63 6F 75 6E 74 69 6E 67 20 41 73 73 69 73 74 + 61 6E 74 03 00 00 35 34 33 04 00 00 38 36 30 33 + 03 00 00 31 32 35 16 00 00 52 65 69 6E 73 75 72 + 61 6E 63 65 20 41 63 63 6F 75 6E 74 61 6E 74 02 + 00 00 45 4E 04 00 00 37 36 33 39 04 00 00 36 36 + 38 34 18 00 00 4D 67 72 20 4F 70 65 72 61 74 69 + 6F 6E 61 6C 20 43 6F 6E 74 72 6F 6C 2E 04 00 00 + 32 34 33 33 04 00 00 31 38 33 34 19 00 00 4C 6F + 63 61 6C 20 4F 66 66 69 63 65 73 20 43 6F 6F 72 + 64 69 6E 61 74 6F 72 04 00 00 38 36 35 36 15 00 + 00 53 74 72 61 74 65 67 69 63 20 43 6F 6E 74 72 + 6F 6C 6C 69 6E 67 02 00 00 41 45 05 00 00 31 32 + 35 34 36 04 00 00 32 31 33 34 05 00 00 31 30 38 + 39 35 04 00 00 38 35 30 33 05 00 00 31 31 37 36 + 32 1B 00 00 48 65 61 64 20 46 61 63 2E 50 72 6F + 70 2E 47 72 65 61 74 65 72 20 43 68 69 6E 61 03 + 00 00 35 38 37 1C 00 00 41 73 73 74 2E 4D 67 72 + 2E 20 54 6F 20 43 6C 69 65 6E 74 20 4D 67 74 20 + 54 65 61 6D 03 00 00 35 36 37 17 00 00 48 65 61 + 64 20 6F 66 20 52 69 73 6B 20 4D 61 6E 61 67 65 + 6D 65 6E 74 04 00 00 38 35 39 32 03 00 00 31 34 + 36 03 00 00 35 38 33 1D 00 00 52 65 70 72 65 73 + 65 6E 74 61 74 69 76 65 26 43 6C 69 65 6E 74 20 + 4D 61 6E 61 67 65 72 02 00 00 41 58 04 00 00 33 + 35 32 32 15 00 00 48 65 61 64 20 50 65 72 66 6F + 72 6D 61 6E 63 65 20 54 65 61 6D 02 00 00 41 4A + 05 00 00 31 31 32 31 37 0A 00 00 33 32 34 2C 20 + 54 6F 6B 79 6F 03 00 00 31 36 38 0E 00 00 52 65 + 70 72 65 73 65 6E 74 61 74 69 76 65 04 00 00 38 + 36 33 36 03 00 00 35 30 31 1C 00 00 41 73 73 6F + 63 69 61 74 65 2C 20 43 6F 72 70 2E 20 44 65 76 + 65 6C 6F 70 6D 65 6E 74 04 00 00 35 39 32 39 04 + 00 00 38 35 39 31 04 00 00 35 38 35 39 04 00 00 + 35 38 30 39 05 00 00 31 32 35 34 38 15 00 00 43 + 61 73 75 61 6C 74 79 20 55 6E 64 65 72 77 72 69 + 74 69 6E 67 04 00 00 33 33 35 35 04 00 00 38 36 + 37 30 16 00 00 45 6E 67 69 6E 65 65 72 69 6E 67 + 20 55 57 20 4D 61 6E 61 67 65 72 04 00 00 37 32 + 32 36 04 00 00 35 34 38 31 13 00 00 42 55 53 20 + 50 72 6F 63 65 73 73 20 4D 61 6E 61 67 65 72 03 + 00 00 35 30 30 0D 00 00 43 6C 65 61 6E 69 6E 67 + 20 41 6D 61 68 03 00 00 33 35 30 03 00 00 33 30 + 33 10 00 00 43 6C 61 69 6D 73 20 41 73 73 69 73 + 74 61 6E 74 03 00 00 32 33 37 03 00 00 32 33 38 + 03 00 00 35 38 36 04 00 00 35 39 32 35 04 00 00 + 36 36 31 32 04 00 00 38 35 33 38 04 00 00 38 34 + 34 33 04 00 00 35 36 38 36 03 00 00 33 35 32 10 + 00 00 44 72 69 76 65 72 2F 4D 65 73 73 65 6E 67 + 65 72 04 00 00 36 37 35 32 12 00 00 4D 61 6E 61 + 67 65 72 20 4A 61 70 61 6E 20 44 65 73 6B 04 00 + 00 31 37 38 39 19 00 00 50 72 6F 70 65 72 74 79 + 20 55 6E 64 65 72 77 72 69 74 69 6E 67 20 4D 67 + 72 04 00 00 38 34 34 37 02 00 00 41 44 04 00 00 + 36 33 30 34 08 00 00 41 72 74 20 44 65 73 6B 04 + 00 00 31 39 30 32 04 00 00 36 30 37 35 03 00 00 + 33 32 30 16 00 00 52 65 63 65 70 74 69 6F 6E 69 + 73 74 2F 53 65 63 72 65 74 61 72 79 03 00 00 31 + 33 36 1A 00 00 48 65 61 64 20 4E 6F 6E 2D 4C 69 + 66 65 20 52 2F 49 20 53 65 72 76 69 63 65 73 03 + 00 00 31 33 39 1D 00 00 53 65 6E 69 6F 72 20 41 + 64 76 69 73 6F 72 20 4E 4C 20 52 49 20 53 65 72 + 76 69 63 65 73 03 00 00 31 33 38 10 00 00 4F 66 + 66 69 63 65 20 4D 67 6D 74 20 26 20 48 52 17 00 + 00 4E 4C 20 52 65 69 6E 73 75 72 61 6E 63 65 20 + 53 65 72 76 69 63 65 73 03 00 00 32 32 34 0F 00 + 00 47 65 6E 65 72 61 6C 20 4D 61 6E 61 67 65 72 + 03 00 00 31 37 38 1E 00 00 4D 67 6D 74 26 53 74 + 61 66 66 20 53 65 72 76 69 63 65 73 20 41 64 6D + 69 6E 69 73 74 72 2E 16 00 00 41 63 63 6F 75 6E + 74 73 20 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 + 03 00 00 33 37 39 15 00 00 48 65 61 64 20 48 52 + 20 47 72 65 61 74 65 72 20 43 68 69 6E 61 04 00 + 00 32 35 36 30 03 00 00 31 38 31 14 00 00 48 65 + 61 64 20 6F 66 20 43 4D 20 49 6E 64 6F 6E 65 73 + 69 61 04 00 00 38 36 37 38 15 00 00 4D 61 6E 61 + 67 65 72 20 44 69 76 69 73 69 6F 6E 61 6C 20 49 + 54 04 00 00 34 31 32 32 03 00 00 33 33 31 02 00 + 00 49 4E 09 00 00 42 61 6E 67 61 6C 6F 72 65 03 + 00 00 35 37 33 13 00 00 54 65 61 6D 20 53 65 72 + 76 69 63 65 20 43 65 6E 74 65 72 04 00 00 35 39 + 30 31 04 00 00 38 35 32 36 03 00 00 35 38 32 17 + 00 00 48 65 61 64 20 6F 66 20 54 72 65 61 74 79 + 20 50 72 6F 70 65 72 74 79 03 00 00 35 30 33 03 + 00 00 33 31 31 03 00 00 35 32 38 03 00 00 33 38 + 35 19 00 00 45 6E 67 69 6E 65 65 72 69 6E 67 20 + 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 03 00 00 + 33 31 33 1A 00 00 55 6E 64 65 72 77 72 69 74 69 + 6E 67 20 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 + 03 00 00 35 37 30 17 00 00 53 65 6E 69 6F 72 20 + 55 2F 57 20 46 61 63 20 43 61 73 75 61 6C 74 79 + 17 00 00 46 61 63 75 6C 74 61 74 69 76 65 20 55 + 6E 64 65 72 77 72 69 74 65 72 03 00 00 33 31 35 + 1B 00 00 43 61 73 75 61 6C 74 79 20 54 72 65 61 + 74 79 20 55 6E 64 65 72 77 72 69 74 65 72 03 00 + 00 35 32 36 0A 00 00 48 52 20 4D 61 6E 61 67 65 + 72 03 00 00 31 38 33 03 00 00 35 37 38 03 00 00 + 33 35 34 07 00 00 4D 61 6E 61 67 65 72 03 00 00 + 32 33 39 03 00 00 35 35 36 18 00 00 53 65 6E 69 + 6F 72 20 55 57 2C 20 46 61 63 2E 20 50 72 6F 70 + 65 72 74 79 03 00 00 33 31 39 14 00 00 41 73 73 + 74 2E 20 45 6E 67 69 6E 65 65 72 69 6E 67 20 55 + 57 03 00 00 35 34 38 1A 00 00 54 72 61 69 6E 65 + 65 20 4D 61 72 69 6E 65 20 55 6E 64 65 72 77 72 + 69 74 65 72 03 00 00 33 35 35 03 00 00 31 38 38 + 15 00 00 49 54 20 53 75 70 70 6F 72 74 20 53 70 + 65 63 69 61 6C 69 73 74 03 00 00 31 39 30 03 00 + 00 32 34 30 19 00 00 46 61 63 2E 20 50 72 6F 70 + 65 72 74 79 20 55 6E 64 65 72 77 72 69 74 65 72 + 03 00 00 35 35 35 13 00 00 4D 61 72 69 6E 65 20 + 48 75 6C 6C 20 4D 61 6E 61 67 65 72 04 00 00 35 + 39 33 38 03 00 00 33 35 36 03 00 00 33 35 37 03 + 00 00 35 38 31 0C 00 00 52 65 63 65 70 74 69 6F + 6E 69 73 74 04 00 00 38 34 35 37 03 00 00 35 37 + 36 19 00 00 48 52 20 4D 61 6E 61 67 65 72 2C 20 + 53 65 61 20 45 61 73 74 20 41 73 69 61 06 00 00 + 4D 75 6D 62 61 69 03 00 00 33 38 30 1B 00 00 45 + 6E 67 69 6E 65 65 72 69 6E 67 20 4C 69 61 69 73 + 6F 6E 20 4D 61 6E 61 67 65 72 03 00 00 33 35 38 + 0E 00 00 53 65 6E 69 6F 72 20 4D 61 6E 61 67 65 + 72 04 00 00 38 34 35 38 04 00 00 38 34 35 39 03 + 00 00 31 32 36 13 00 00 54 65 63 68 6E 69 63 61 + 6C 20 41 73 73 69 73 74 61 6E 74 04 00 00 34 34 + 31 37 10 00 00 4E 6F 6E 2D 4C 69 66 65 20 4D 61 + 6E 61 67 65 72 04 00 00 39 37 32 39 04 00 00 38 + 35 37 39 04 00 00 32 37 33 38 03 00 00 31 39 35 + 1B 00 00 48 65 61 64 20 6F 66 20 43 6C 69 65 6E + 74 20 43 6F 6F 72 64 69 6E 61 74 69 6F 6E 03 00 + 00 31 32 37 16 00 00 53 65 63 72 65 74 61 72 79 + 2F 52 65 63 65 70 74 69 6F 6E 69 73 74 04 00 00 + 31 39 34 37 04 00 00 33 38 36 36 03 00 00 32 37 + 34 03 00 00 36 38 36 03 00 00 31 39 37 1C 00 00 + 54 65 63 68 6E 2E 41 63 63 6F 75 6E 74 73 20 41 + 64 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00 33 + 32 36 36 04 00 00 38 35 39 35 04 00 00 35 35 37 + 37 04 00 00 32 31 36 35 13 00 00 4D 61 6E 61 67 + 65 72 20 4B 6F 72 65 61 6E 20 44 65 73 6B 04 00 + 00 38 34 32 31 03 00 00 36 30 36 04 00 00 38 36 + 38 30 03 00 00 31 39 39 03 00 00 35 33 35 16 00 + 00 55 6E 64 65 72 77 72 69 74 69 6E 67 20 41 73 + 73 69 73 74 61 6E 74 03 00 00 35 35 39 04 00 00 + 38 35 31 31 03 00 00 32 30 30 12 00 00 43 6C 69 + 65 6E 74 20 43 6F 6F 72 64 69 6E 61 74 6F 72 04 + 00 00 35 32 32 32 04 00 00 38 35 38 33 03 00 00 + 34 39 37 14 00 00 4D 61 6E 61 67 65 72 20 55 6E + 64 65 72 77 72 69 74 69 6E 67 04 00 00 35 39 36 + 38 14 00 00 42 55 53 20 54 72 61 69 6E 69 6E 67 + 20 4D 61 6E 61 67 65 72 03 00 00 35 37 35 1A 00 + 00 52 65 67 69 6F 6E 61 6C 20 50 72 6F 70 65 72 + 74 79 20 46 61 63 2E 4D 67 72 2E 03 00 00 32 30 + 33 1B 00 00 44 65 70 75 74 79 20 48 65 61 64 20 + 45 4E 20 55 6E 64 65 72 77 72 69 74 69 6E 67 03 + 00 00 35 34 36 19 00 00 46 61 63 75 6C 74 61 74 + 69 76 65 20 41 64 6D 69 6E 69 73 74 72 61 74 6F + 72 04 00 00 36 36 32 32 05 00 00 31 32 35 35 39 + 05 00 00 31 32 30 38 38 03 00 00 35 31 36 04 00 + 00 32 38 39 30 15 00 00 49 6E 74 65 72 6E 61 74 + 69 6F 6E 61 6C 20 53 75 70 70 6F 72 74 03 00 00 + 34 39 35 18 00 00 50 72 6F 70 65 72 74 79 20 4C + 69 61 69 73 6F 6E 20 4D 61 6E 61 67 65 72 04 00 + 00 36 34 35 37 18 00 00 45 6E 67 69 6E 65 65 72 + 69 6E 67 20 55 6E 64 65 72 77 72 69 74 69 6E 67 + 04 00 00 34 30 32 34 03 00 00 31 36 33 12 00 00 + 48 65 61 64 20 4C 6F 63 61 6C 20 4F 66 66 69 63 + 65 73 04 00 00 34 38 35 39 16 00 00 4C 6F 74 75 + 73 20 4E 6F 74 65 73 20 45 6E 74 77 69 63 6B 6C + 65 72 04 00 00 38 35 34 32 04 00 00 38 35 32 37 + 04 00 00 38 35 33 36 04 00 00 36 35 35 33 04 00 + 00 32 34 35 31 14 00 00 44 65 70 61 72 74 6D 65 + 6E 74 20 53 65 63 72 65 74 61 72 79 03 00 00 39 + 36 35 04 00 00 38 36 36 37 10 00 00 52 65 73 65 + 61 72 63 68 20 26 20 43 6F 6D 6D 2E 04 00 00 38 + 34 37 38 04 00 00 31 38 34 34 03 00 00 33 34 32 + 10 00 00 41 63 63 6F 75 6E 74 73 20 4D 61 6E 61 + 67 65 72 03 00 00 35 33 34 10 00 00 46 61 63 2E + 20 50 72 6F 70 65 72 74 79 20 55 57 03 00 00 32 + 34 31 07 00 00 54 72 61 69 6E 65 65 03 00 00 32 + 34 32 03 00 00 35 32 35 13 00 00 41 63 63 6F 75 + 6E 74 20 55 6E 64 65 72 77 72 69 74 65 72 0A 00 + 00 32 36 2E 30 39 2E 31 39 37 38 0A 00 00 31 35 + 2E 30 36 2E 31 39 39 38 0A 00 00 30 31 2E 30 31 + 2E 31 39 35 34 0A 00 00 31 39 2E 30 39 2E 31 39 + 37 37 0A 00 00 32 30 2E 30 35 2E 31 39 35 31 0A + 00 00 30 31 2E 30 38 2E 31 39 39 38 0A 00 00 33 + 31 2E 31 30 2E 31 39 36 38 0A 00 00 30 34 2E 30 + 39 2E 31 39 36 34 0A 00 00 31 30 2E 30 37 2E 32 + 30 30 30 0A 00 00 32 39 2E 30 38 2E 31 39 36 38 + 0A 00 00 30 31 2E 31 30 2E 31 39 39 36 14 00 00 + 53 65 6E 6F 69 72 20 52 69 73 6B 20 45 6E 67 69 + 6E 65 65 72 0A 00 00 30 33 2E 31 30 2E 31 39 37 + 30 0A 00 00 30 31 2E 30 33 2E 31 39 39 38 0A 00 + 00 31 34 2E 30 33 2E 31 39 37 31 17 00 00 49 54 + 20 53 65 63 75 72 69 74 79 20 43 6F 6F 72 64 69 + 6E 61 74 6F 72 19 00 00 53 65 6E 2E 20 49 54 20 + 53 65 63 75 72 2E 20 50 72 6F 6A 2E 20 4D 67 72 + 2E 11 00 00 46 69 6E 61 6E 7A 2D 53 70 65 7A 69 + 61 6C 69 73 74 16 00 00 47 72 6F 75 70 20 43 6F + 6D 70 65 6E 73 61 74 69 6F 6E 20 4D 67 72 12 00 + 00 43 6F 6E 66 65 72 65 6E 63 65 20 4D 61 6E 61 + 67 65 72 12 00 00 44 65 70 75 74 79 20 48 65 61 + 64 20 6F 66 20 54 41 41 19 00 00 53 65 6E 2E 20 + 56 69 63 65 20 50 72 65 73 69 64 65 6E 74 20 52 + 65 69 6E 2E 0F 00 00 48 65 61 64 20 6F 66 20 52 + 26 52 20 48 55 42 0C 00 00 4D 61 6E 68 61 74 74 + 61 6E 20 4E 59 0A 00 00 48 61 75 73 77 61 72 74 + 69 6E 03 00 00 4C 58 32 14 00 00 42 65 72 65 69 + 63 68 73 70 65 72 73 6F 6E 61 6C 63 68 65 66 06 + 00 00 45 78 74 65 72 6E 19 00 00 48 65 61 64 20 + 6F 66 20 52 65 69 6E 73 2E 4C 69 61 62 69 6C 69 + 74 2E 2C 44 01 00 00 56 02 00 00 4E 4C 18 00 00 + 53 65 6E 69 6F 72 20 43 6C 61 69 6D 73 20 43 6F + 6E 73 75 6C 74 61 6E 74 08 00 00 44 69 72 65 63 + 74 6F 72 07 00 00 42 45 52 4D 55 44 41 0A 00 00 + 53 74 72 75 63 74 75 72 65 72 0A 00 00 4F 70 65 + 72 61 74 69 6F 6E 73 06 00 00 32 30 30 31 30 36 + 02 00 00 42 52 09 00 00 53 61 6F 20 50 61 75 6C + 6F 0A 00 00 30 39 2E 30 35 2E 31 39 37 36 0A 00 + 00 31 34 2E 30 38 2E 31 39 36 37 0A 00 00 30 31 + 2E 30 37 2E 31 39 39 35 0A 00 00 32 35 2E 30 33 + 2E 31 39 37 32 0A 00 00 30 33 2E 30 31 2E 32 30 + 30 30 0A 00 00 32 31 2E 30 34 2E 31 39 37 30 0A + 00 00 30 39 2E 30 35 2E 31 39 36 32 0A 00 00 30 + 32 2E 30 39 2E 31 39 39 36 0A 00 00 31 35 2E 30 + 34 2E 31 39 37 31 0A 00 00 32 37 2E 31 30 2E 31 + 39 39 37 0A 00 00 32 32 2E 31 30 2E 31 39 36 38 + 0A 00 00 32 36 2E 30 35 2E 31 39 39 33 0A 00 00 + 30 32 2E 30 33 2E 31 39 35 38 0A 00 00 30 31 2E + 30 33 2E 31 39 38 34 0A 00 00 31 36 2E 30 35 2E + 31 39 35 36 0A 00 00 32 38 2E 30 38 2E 31 39 36 + 37 0A 00 00 32 30 2E 30 33 2E 31 39 36 32 0A 00 + 00 30 31 2E 30 33 2E 31 39 39 36 0A 00 00 30 35 + 2E 30 32 2E 31 39 36 38 0A 00 00 30 35 2E 31 32 + 2E 31 39 36 38 0A 00 00 31 30 2E 30 34 2E 31 39 + 39 35 0A 00 00 30 34 2E 30 31 2E 31 39 37 33 0A + 00 00 32 39 2E 30 37 2E 31 39 35 39 0A 00 00 32 + 34 2E 30 36 2E 31 39 36 30 0A 00 00 31 32 2E 30 + 33 2E 31 39 36 39 1C 00 00 50 65 72 73 6F 6E 61 + 6C 20 41 73 73 74 2E 20 74 6F 20 43 68 69 65 66 + 20 52 65 70 2E 0A 00 00 31 33 2E 30 38 2E 31 39 + 37 34 0A 00 00 30 31 2E 30 36 2E 32 30 30 30 0A + 00 00 30 33 2E 30 38 2E 31 39 34 39 0A 00 00 30 + 31 2E 30 33 2E 31 39 39 32 0A 00 00 32 36 2E 30 + 31 2E 31 39 36 32 0A 00 00 32 37 2E 30 39 2E 31 + 39 38 34 0A 00 00 30 34 2E 30 33 2E 31 39 35 34 + 03 00 00 4E 2F 41 0A 00 00 32 32 2E 30 33 2E 31 + 39 36 34 0A 00 00 30 31 2E 30 37 2E 31 39 39 39 + 0A 00 00 30 36 2E 30 36 2E 31 39 37 32 0A 00 00 + 32 39 2E 30 39 2E 31 39 35 39 0A 00 00 31 36 2E + 30 31 2E 31 39 39 31 0A 00 00 32 38 2E 31 32 2E + 31 39 36 30 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4 new file mode 100755 index 0000000000..f8fd5342ae --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4 @@ -0,0 +1,515 @@ + 3C 00 20 20 0A 00 00 32 34 2E 30 36 + 2E 31 39 39 36 0A 00 00 31 36 2E 30 32 2E 31 39 + 35 33 0A 00 00 32 33 2E 30 32 2E 31 39 37 33 0A + 00 00 31 35 2E 30 39 2E 31 39 36 38 0A 00 00 32 + 35 2E 30 38 2E 31 39 39 37 0A 00 00 32 36 2E 30 + 39 2E 31 39 36 30 0A 00 00 30 32 2E 30 31 2E 32 + 30 30 30 0A 00 00 32 33 2E 31 30 2E 31 39 36 39 + 0A 00 00 32 32 2E 30 32 2E 31 39 34 39 0A 00 00 + 30 38 2E 31 32 2E 31 39 36 35 0A 00 00 30 32 2E + 30 38 2E 31 39 39 39 0A 00 00 30 39 2E 30 31 2E + 31 39 37 33 0A 00 00 30 31 2E 30 32 2E 32 30 30 + 30 0A 00 00 30 38 2E 31 32 2E 31 39 35 37 0A 00 + 00 32 33 2E 30 33 2E 31 39 37 33 02 00 00 32 33 + 10 00 00 48 F4 74 65 73 73 65 20 61 63 63 75 65 + 75 69 6C 02 00 00 34 34 0D 00 00 43 6F 6D 6D 75 + 6E 69 63 61 74 69 6F 6E 1B 00 00 52 65 73 70 2E + 73 75 70 70 6F 72 74 20 74 65 63 68 6E 2E 20 49 + 6E 66 6F 72 6D 2E 02 00 00 36 32 1B 00 00 52 65 + 73 70 6F 6E 73 69 62 6C 65 20 22 73 70 65 63 69 + 61 6C 20 6C 69 6E 65 73 22 08 00 00 36 30 33 2D + 32 30 30 33 08 00 00 36 30 33 2D 32 30 30 34 08 + 00 00 36 30 33 2D 32 30 30 35 08 00 00 36 30 33 + 2D 32 30 30 38 08 00 00 36 30 33 2D 32 30 30 39 + 08 00 00 36 30 33 2D 32 30 31 30 02 00 00 50 33 + 14 00 00 55 57 20 50 72 6F 70 65 72 74 79 2F 43 + 61 73 75 61 6C 74 79 03 00 00 54 4E 44 0C 00 00 + 44 65 61 6C 20 4D 61 6E 61 67 65 72 13 00 00 55 + 57 20 53 75 70 70 6F 72 74 20 46 61 6B 20 53 61 + 63 68 02 00 00 53 33 17 00 00 52 2F 49 20 50 72 + 6F 64 75 63 74 20 43 6F 6E 74 72 6F 6C 6C 69 6E + 67 19 00 00 55 6E 64 65 72 77 72 69 74 69 6E 67 + 20 53 75 70 70 2E 20 4D 61 72 69 6E 65 19 00 00 + 48 65 61 64 20 49 6E 74 65 72 6E 2E 20 43 6C 69 + 65 6E 74 73 20 55 6E 69 74 19 00 00 53 65 6E 2E + 46 69 6E 61 6E 63 2E 53 6F 6C 75 74 69 6F 6E 73 + 20 43 6F 6E 73 13 00 00 54 61 63 74 69 63 61 6C + 20 41 6C 6C 6F 63 61 74 69 6F 6E 18 00 00 44 65 + 70 2E 48 65 61 64 20 54 65 63 68 6E 2E 49 6E 66 + 72 61 73 74 72 2E 18 00 00 44 69 76 69 73 69 6F + 6E 61 6C 20 43 6F 6D 6D 2E 20 4F 66 66 69 63 65 + 72 19 00 00 44 65 70 75 74 79 20 48 65 61 64 20 + 42 75 73 2E 20 54 72 61 69 6E 69 6E 67 0F 00 00 + 43 61 73 68 20 4D 61 6E 61 67 65 6D 65 6E 74 18 + 00 00 50 45 4B 41 2F 50 34 30 30 2F 48 52 2D 4D + 49 53 20 41 70 70 6C 69 63 2E 0B 00 00 48 65 61 + 64 20 6F 66 20 4B 4E 43 15 00 00 53 70 65 7A 69 + 61 6C 69 73 74 20 52 56 2D 54 65 63 68 6E 69 6B + 19 00 00 43 6F 72 70 2E 20 49 64 65 6E 74 69 74 + 79 20 53 70 65 63 69 61 6C 69 73 74 14 00 00 48 + 65 61 64 20 43 61 73 68 20 4D 61 6E 61 67 65 6D + 65 6E 74 16 00 00 49 54 20 53 65 63 75 72 69 74 + 79 20 43 6F 6E 73 75 6C 74 61 6E 74 17 00 00 55 + 6E 64 65 72 77 72 69 74 65 72 20 54 72 65 61 74 + 79 20 44 65 73 6B 11 00 00 50 72 6F 6A 65 6B 74 + 2D 41 73 73 69 73 74 65 6E 74 11 00 00 50 6F 72 + 74 61 6C 20 43 6F 6E 73 75 6C 74 61 6E 74 10 00 + 00 53 65 6E 2E 20 55 57 20 50 72 6F 70 65 72 74 + 79 11 00 00 54 65 61 6D 20 53 65 63 72 65 74 61 + 72 79 20 52 42 19 00 00 47 72 70 2E 20 53 65 63 + 75 72 69 74 79 26 53 61 66 65 74 79 20 4D 67 72 + 2E 19 00 00 4A 75 6E 69 6F 72 20 49 6E 76 65 73 + 74 2E 20 43 6F 6E 74 72 6F 6C 6C 65 72 16 00 00 + 65 2D 6D 61 72 6B 65 74 73 20 69 6E 74 65 6C 6C + 69 67 65 6E 63 65 0F 00 00 41 72 63 68 69 76 65 + 20 4D 61 6E 61 67 65 72 19 00 00 41 73 73 69 73 + 74 2E 20 74 6F 20 48 65 61 64 20 4D 61 72 6B 65 + 74 69 6E 67 06 00 00 4B F6 63 68 69 6E 18 00 00 + 41 73 73 69 73 74 61 6E 74 20 74 6F 20 48 65 61 + 64 20 47 72 70 20 50 4D 14 00 00 48 6F 74 65 6C + 66 61 63 68 61 73 73 69 73 74 65 6E 74 69 6E 19 + 00 00 48 65 61 64 20 42 65 73 74 20 50 72 61 63 + 74 69 63 65 26 41 75 64 69 74 73 18 00 00 4B 6F + 6D 6D 75 6E 69 6B 61 74 69 6F 6E 73 73 70 65 7A + 69 61 6C 69 73 74 18 00 00 53 65 6E 2E 20 49 6E + 76 65 73 74 6D 2E 20 43 6F 6E 74 72 6F 6C 6C 65 + 72 0A 00 00 50 4D 4F 20 45 75 72 6F 70 65 17 00 + 00 53 70 65 63 69 61 6C 20 50 72 6F 6A 65 63 74 + 20 4D 61 6E 61 67 65 72 18 00 00 53 65 6E 69 6F + 72 20 46 69 6E 61 6E 63 69 61 6C 20 4F 66 66 69 + 63 65 72 15 00 00 49 6E 76 65 73 74 6D 65 6E 74 + 20 41 63 63 6F 75 6E 74 69 6E 67 19 00 00 48 65 + 61 64 20 6F 66 20 42 75 73 69 6E 65 73 73 20 54 + 72 61 69 6E 69 6E 67 14 00 00 41 73 73 2E 20 41 + 63 63 6F 75 6E 74 20 4D 61 6E 61 67 65 72 02 00 + 00 44 42 17 00 00 4C 65 69 74 65 72 69 6E 20 45 + 72 77 65 72 62 20 2F 20 52 65 63 68 74 18 00 00 + 44 65 70 2E 20 47 72 6F 75 70 20 43 6C 61 69 6D + 73 20 43 6F 6F 72 64 2E 17 00 00 4D 61 6E 61 67 + 65 72 20 53 79 73 74 65 6D 20 53 65 72 76 69 63 + 65 73 16 00 00 4D 65 6D 62 65 72 20 42 55 53 20 + 50 65 72 66 6F 72 6D 61 6E 63 65 14 00 00 49 6E + 76 65 73 74 6D 65 6E 74 20 52 65 70 6F 72 74 69 + 6E 67 19 00 00 53 65 6E 2E 20 49 54 20 53 65 63 + 75 72 69 74 79 20 43 6F 6E 73 75 6C 74 2E 17 00 + 00 53 61 63 68 62 65 61 72 62 2E 20 45 72 77 65 + 72 62 26 52 65 63 68 74 19 00 00 53 65 6E 2E 20 + 41 63 63 6F 75 6E 74 61 6E 74 2F 43 6F 6E 74 72 + 6F 6C 6C 2E 10 00 00 43 6F 6D 6D 2E 20 43 6F 6E + 73 75 6C 74 61 6E 74 17 00 00 4C 69 65 67 65 6E + 73 63 68 61 66 74 65 6E 76 65 72 77 61 6C 74 65 + 72 10 00 00 41 64 6D 69 6E 2E 20 50 72 75 64 65 + 6E 74 69 61 02 00 00 47 50 0B 00 00 43 75 72 61 + 74 6F 72 73 68 69 70 19 00 00 48 65 61 64 20 6F + 66 20 57 6F 72 6B 73 74 2E 20 49 6E 66 72 61 73 + 74 72 2E 18 00 00 4D 67 72 2E 20 44 61 74 61 20 + 43 61 70 74 2E 26 54 61 78 6F 6E 6F 6D 79 19 00 + 00 54 65 61 6D 6C 65 69 74 65 72 20 54 65 63 68 + 6E 2E 20 53 75 70 70 6F 72 74 19 00 00 48 65 61 + 64 20 53 52 20 54 65 63 68 6E 6F 6C 6F 67 79 20 + 53 74 61 6E 64 2E 12 00 00 43 6F 6D 6D 2E 20 41 + 73 73 2E 20 52 FC 73 63 68 6C 2E 0D 00 00 4C 6F + 63 61 6C 20 4F 66 66 69 63 65 72 06 00 00 4C 54 + 50 52 20 44 12 00 00 53 74 76 2E 20 47 72 75 70 + 70 65 6E 6C 65 69 74 65 72 06 00 00 4C 54 50 52 + 20 45 06 00 00 4C 54 50 52 20 47 06 00 00 4C 54 + 50 52 20 49 06 00 00 4C 54 50 52 20 46 06 00 00 + 4C 54 50 52 20 41 09 00 00 52 65 70 6F 72 74 69 + 6E 67 19 00 00 47 72 6F 75 70 20 49 54 20 53 65 + 63 75 72 69 74 79 20 4F 66 66 69 63 65 72 06 00 + 00 4C 54 50 52 20 48 18 00 00 4C 65 69 74 65 72 + 20 48 79 70 6F 74 68 65 6B 65 6E 2F 41 64 6D 69 + 6E 2E 06 00 00 4C 54 50 52 20 43 19 00 00 53 61 + 63 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 48 + 79 70 6F 74 68 65 6B 11 00 00 41 73 73 69 73 74 + 61 6E 74 20 43 4C 4F 2F 43 43 4F 18 00 00 50 72 + 6F 6A 2E 20 4D 61 6E 61 67 65 72 20 53 70 6F 6E + 73 6F 72 69 6E 67 0A 00 00 4C 65 69 74 65 72 20 + 42 61 75 11 00 00 48 65 61 64 20 6F 66 20 54 65 + 6C 65 70 68 6F 6E 79 18 00 00 53 65 6E 69 6F 72 + 20 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 53 70 65 + 63 2E 18 00 00 41 73 73 2E 20 54 61 63 74 69 63 + 61 6C 20 41 6C 6C 6F 63 61 74 69 6F 6E 12 00 00 + 50 72 6F 6A 65 63 74 20 4D 61 6E 61 67 65 6D 65 + 6E 74 19 00 00 48 65 61 64 20 49 6E 76 2E 46 75 + 6E 64 73 2F 4F 70 65 72 61 74 69 6F 6E 73 18 00 + 00 46 69 6E 61 6E 63 2E 20 4F 66 66 2E 20 73 77 + 69 66 74 72 65 2E 63 6F 6D 19 00 00 4C 65 61 72 + 6E 69 6E 67 43 6F 6F 72 64 69 6E 61 74 6F 72 20 + 5A 4F 52 52 4F 17 00 00 48 65 61 64 20 43 4D 53 + 20 43 6C 65 61 72 69 6E 67 20 48 6F 75 73 65 18 + 00 00 45 6E 67 69 6E 65 65 72 69 6E 67 20 55 57 + 20 41 73 73 69 73 74 61 6E 74 15 00 00 50 72 6F + 70 65 72 74 79 20 50 72 6F 64 75 63 74 20 4D 67 + 72 2E 06 00 00 4C 54 50 52 20 42 0E 00 00 48 65 + 61 64 20 50 72 75 64 65 6E 74 69 61 02 00 00 44 + 57 19 00 00 48 65 61 64 20 44 61 74 61 20 57 61 + 72 65 68 6F 75 73 65 20 53 65 72 76 2E 02 00 00 + 47 45 19 00 00 48 65 61 64 20 43 6F 6E 74 72 6F + 6C 6C 69 6E 67 20 50 72 6F 6A 65 63 74 73 16 00 + 00 50 6F 72 74 61 6C 20 43 6F 6E 74 65 6E 74 20 + 4D 61 6E 61 67 65 72 02 00 00 20 35 02 00 00 20 + 34 25 00 00 41 73 73 69 73 74 61 6E 74 65 20 64 + E9 70 61 72 74 65 6D 65 6E 74 20 74 72 61 69 74 + E9 20 6E 6F 6E 20 76 69 65 03 00 00 43 34 32 03 + 00 00 43 34 33 03 00 00 43 34 34 03 00 00 43 34 + 35 03 00 00 43 34 36 0D 00 00 52 75 6E 4F 66 66 + 20 52 65 61 63 6F 6C 03 00 00 43 34 37 03 00 00 + 43 34 38 03 00 00 43 34 39 03 00 00 43 35 30 12 + 00 00 43 6C 61 69 6D 73 20 4D 61 6E 61 67 65 72 + 20 53 45 41 0F 00 00 50 72 6F 63 65 73 73 20 41 + 6E 61 6C 79 73 74 0B 00 00 54 65 61 6D 20 4C 65 + 61 64 65 72 18 00 00 43 61 73 75 61 6C 74 79 20 + 4C 69 61 69 73 6F 6E 20 4D 61 6E 61 67 65 72 17 + 00 00 48 75 6D 61 6E 20 52 65 73 6F 75 72 63 65 + 73 20 4F 66 66 69 63 65 72 0F 00 00 46 61 63 20 + 55 6E 64 65 72 77 72 69 74 65 72 13 00 00 48 65 + 61 64 20 4F 70 65 72 61 74 69 6F 6E 73 20 53 53 + 43 1A 00 00 43 61 73 75 61 6C 74 79 20 54 72 65 + 61 74 79 20 55 57 20 4D 61 6E 61 67 65 72 0A 00 + 00 4D 61 6E 61 67 65 72 2D 49 54 1F 00 00 46 61 + 63 75 6C 74 61 74 69 76 65 20 55 57 20 53 75 70 + 70 6F 72 74 20 43 61 73 75 61 6C 74 79 1B 00 00 + 48 65 61 64 20 4C 65 61 72 6E 69 6E 67 20 26 20 + 44 65 76 65 6C 6F 70 6D 65 6E 74 22 00 00 48 65 + 61 64 20 6F 66 20 46 61 63 20 50 72 6F 70 65 72 + 74 79 20 26 20 45 6E 67 69 6E 65 65 72 69 6E 67 + 12 00 00 41 63 63 6F 75 6E 74 69 6E 67 20 4D 61 + 6E 61 67 65 72 05 00 00 37 30 32 34 31 29 00 00 + 48 65 61 64 20 6F 66 20 41 6D 65 72 69 63 61 73 + 20 44 69 76 69 73 69 6F 6E 20 48 75 6D 61 6E 20 + 52 65 73 6F 75 72 63 65 73 02 00 00 30 39 05 00 + 00 38 30 33 38 33 07 00 00 41 6E 61 6C 79 73 74 + 03 00 00 31 31 30 05 00 00 33 32 34 35 31 1E 00 + 00 47 72 6F 75 70 20 50 72 6F 64 75 63 74 20 4D + 61 6E 61 67 65 72 20 43 61 73 75 61 6C 74 79 02 + 00 00 30 31 05 00 00 38 31 34 38 39 13 00 00 46 + 69 6E 61 6E 63 69 61 6C 20 41 6E 61 6C 79 73 74 + 20 31 03 00 00 31 32 30 05 00 00 38 30 35 30 30 + 09 00 00 50 72 69 6E 63 69 70 61 6C 02 00 00 30 + 34 18 00 00 48 65 61 64 20 49 6E 76 65 73 74 6D + 65 6E 74 20 41 63 63 6F 75 6E 74 2E 14 00 00 50 + 6F 72 74 66 6F 6C 69 6F 20 4D 61 6E 61 67 65 6D + 65 6E 74 19 00 00 41 73 73 2E 49 6E 76 65 73 74 + 6F 72 20 52 65 6C 61 74 69 6F 6E 20 4D 67 72 19 + 00 00 45 6C 65 63 74 72 6F 6E 69 63 20 52 69 73 + 6B 20 45 78 63 68 61 6E 67 65 73 09 00 00 54 4C + 20 42 75 66 66 65 74 14 00 00 4C 65 61 72 6E 69 + 6E 67 20 43 6F 6F 72 64 69 6E 61 74 6F 72 18 00 + 00 54 65 63 68 6E 69 63 61 6C 20 49 6E 66 72 61 + 73 74 72 75 63 74 75 72 65 19 00 00 48 65 61 64 + 20 54 65 63 68 6E 2E 49 6E 66 72 61 73 74 72 75 + 63 74 75 72 65 19 00 00 49 55 46 20 43 6F 6D 6D + 75 6E 69 63 61 74 69 6F 6E 20 4D 61 6E 61 67 65 + 72 12 00 00 43 46 4F 20 42 75 73 69 6E 65 73 73 + 20 47 72 6F 75 70 16 00 00 54 4C 20 45 69 6E 72 + 69 63 68 74 75 6E 67 73 70 6C 61 6E 75 6E 67 15 + 00 00 49 6E 76 65 73 74 6D 65 6E 74 20 43 6F 6E + 74 72 6F 6C 6C 65 72 18 00 00 48 65 61 64 20 6F + 66 20 4C 69 62 72 61 72 79 20 53 65 72 76 69 63 + 65 73 0C 00 00 52 69 73 6B 20 4D 61 6E 61 67 65 + 72 19 00 00 46 75 6E 63 74 69 6F 6E 61 6C 20 44 + 65 73 69 67 6E 20 41 6E 61 6C 79 73 74 16 00 00 + 41 73 73 69 73 74 61 6E 74 20 52 69 73 6B 20 4D + 61 6E 61 67 65 72 04 00 00 36 38 38 30 13 00 00 + 53 61 63 68 62 65 61 72 62 65 69 74 65 72 20 46 + 69 62 75 04 00 00 36 38 38 37 08 00 00 45 6E 67 + 69 6E 65 65 72 04 00 00 36 38 39 32 04 00 00 36 + 38 39 36 04 00 00 36 39 30 39 0C 00 00 50 72 69 + 63 69 6E 67 2F 44 61 74 61 04 00 00 36 39 31 31 + 0E 00 00 43 41 44 2D 53 70 65 7A 69 61 6C 69 73 + 74 04 00 00 36 39 31 34 04 00 00 36 39 32 33 17 + 00 00 47 72 6C 2E 20 42 65 74 72 69 65 62 20 4D + 79 74 68 65 6E 71 75 61 69 04 00 00 36 39 32 38 + 0D 00 00 48 65 61 64 20 6F 66 20 4C 45 2F 4C 54 + 04 00 00 36 39 33 35 04 00 00 36 39 33 39 14 00 + 00 54 65 63 68 6E 69 73 63 68 65 72 20 5A 65 69 + 63 68 6E 65 72 04 00 00 36 39 34 33 04 00 00 36 + 39 35 36 13 00 00 46 61 63 68 72 65 66 65 72 65 + 6E 74 20 55 6D 77 65 6C 74 04 00 00 36 39 35 37 + 04 00 00 36 39 36 36 18 00 00 42 65 61 75 66 74 + 72 61 67 74 65 20 4A 75 6E 69 6F 72 20 50 6F 77 + 65 72 04 00 00 36 39 37 31 04 00 00 36 39 39 34 + 04 00 00 37 30 30 33 04 00 00 37 30 30 37 17 00 + 00 48 65 61 64 20 43 6F 72 70 6F 72 61 74 65 20 + 44 65 76 65 6C 6F 70 2E 04 00 00 37 30 30 38 14 + 00 00 4C 65 69 74 65 6E 64 65 72 20 4B FC 63 68 + 65 6E 63 68 65 66 04 00 00 37 30 30 39 17 00 00 + 54 4C 20 45 6C 65 6B 74 72 6F 20 26 20 47 65 62 + 2E 74 65 63 68 6E 2E 04 00 00 37 30 31 31 0F 00 + 00 53 74 76 2E 20 4B FC 63 68 65 6E 63 68 65 66 + 04 00 00 37 30 31 34 04 00 00 37 30 32 33 04 00 + 00 37 30 32 34 04 00 00 37 30 32 37 04 00 00 37 + 30 35 31 18 00 00 53 65 6E 2E 20 43 72 65 64 69 + 74 20 52 69 73 6B 20 4D 61 6E 61 67 65 72 04 00 + 00 37 30 35 32 04 00 00 37 30 35 37 12 00 00 50 + 72 6F 6A 65 63 74 20 53 70 65 63 69 61 6C 69 73 + 74 04 00 00 37 30 36 32 04 00 00 37 30 36 36 18 + 00 00 48 65 61 64 20 6F 66 20 4D 65 64 69 63 61 + 6C 20 53 65 72 76 69 63 65 73 04 00 00 37 30 36 + 39 04 00 00 37 30 38 33 04 00 00 37 30 38 34 0A + 00 00 43 49 2D 4D 61 6E 61 67 65 72 04 00 00 37 + 30 38 36 13 00 00 47 72 6F 75 70 20 48 52 20 43 + 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 37 30 39 31 + 04 00 00 37 30 39 32 15 00 00 47 72 6C 2E 20 53 + 70 65 63 69 61 6C 20 42 75 73 69 6E 65 73 73 04 + 00 00 37 30 39 33 04 00 00 37 30 39 35 04 00 00 + 37 30 39 37 18 00 00 42 75 73 69 6E 65 73 73 20 + 41 70 70 6C 2E 20 41 72 63 68 69 74 65 63 74 04 + 00 00 37 31 30 30 04 00 00 37 31 30 32 12 00 00 + 4D 61 6E 61 67 65 6D 65 6E 74 20 53 75 70 70 6F + 72 74 04 00 00 37 31 32 30 04 00 00 37 31 32 35 + 04 00 00 37 31 32 38 04 00 00 37 31 32 39 04 00 + 00 37 31 33 33 04 00 00 37 31 34 30 04 00 00 37 + 31 34 33 08 00 00 41 6B 74 75 61 72 69 6E 04 00 + 00 37 31 35 31 04 00 00 37 31 35 37 16 00 00 41 + 73 73 69 73 74 61 6E 74 20 74 6F 20 55 6E 69 74 + 20 48 65 61 64 04 00 00 37 31 36 30 04 00 00 37 + 31 36 36 10 00 00 53 65 63 72 65 74 61 72 79 20 + 74 6F 20 44 4F 4F 04 00 00 37 31 37 36 04 00 00 + 37 31 38 30 15 00 00 47 72 75 70 70 65 6E 6C 65 + 69 74 65 72 20 53 75 70 70 6F 72 74 04 00 00 37 + 31 38 31 18 00 00 48 65 61 64 20 6F 66 20 48 6F + 74 65 6C 20 4F 70 65 72 61 74 69 6F 6E 73 04 00 + 00 37 31 38 32 02 00 00 55 53 08 00 00 4E 65 77 + 20 59 6F 72 6B 04 00 00 37 32 31 30 04 00 00 37 + 32 31 33 04 00 00 37 32 36 37 04 00 00 37 32 37 + 33 19 00 00 53 65 63 74 69 6F 6E 20 48 65 61 64 + 20 53 70 65 63 69 61 6C 20 41 73 73 2E 04 00 00 + 37 32 38 30 19 00 00 48 65 61 64 20 53 74 72 61 + 74 2E 20 50 6C 61 6E 6E 2E 26 20 50 72 6F 6A 2E + 04 00 00 37 32 38 34 04 00 00 37 33 31 38 04 00 + 00 37 33 31 39 04 00 00 37 33 32 32 04 00 00 37 + 33 32 33 04 00 00 37 33 33 31 04 00 00 37 33 33 + 34 03 00 00 47 49 41 04 00 00 37 33 33 38 19 00 + 00 47 49 41 20 4F 66 66 69 63 65 26 43 6F 6D 6D + 75 6E 69 63 61 74 69 6F 6E 73 04 00 00 37 33 33 + 39 0B 00 00 4F 72 67 61 6E 69 73 61 74 6F 72 04 + 00 00 37 33 34 31 06 00 00 41 6B 74 75 61 72 04 + 00 00 37 33 34 35 04 00 00 37 33 34 39 04 00 00 + 37 33 36 30 04 00 00 37 33 36 31 04 00 00 37 33 + 36 32 04 00 00 37 33 36 33 04 00 00 37 33 36 37 + 04 00 00 37 33 37 37 04 00 00 37 33 37 38 15 00 + 00 41 75 73 62 69 6C 64 75 6E 67 73 73 61 63 68 + 62 65 61 72 62 2E 04 00 00 37 33 39 30 04 00 00 + 37 33 39 32 04 00 00 37 34 32 30 04 00 00 37 34 + 33 35 04 00 00 37 34 34 32 04 00 00 37 34 35 35 + 11 00 00 54 4C 20 45 6C 65 6B 74 72 6F 74 65 63 + 68 6E 69 6B 04 00 00 37 34 36 30 04 00 00 37 34 + 36 31 04 00 00 37 34 37 39 04 00 00 37 34 39 32 + 04 00 00 37 34 39 35 04 00 00 37 34 39 36 17 00 + 00 55 65 62 65 72 73 65 74 7A 2E 2F 54 65 72 6D + 69 6E 6F 6C 6F 67 69 6E 04 00 00 37 35 30 30 0D + 00 00 4C 65 67 61 6C 20 43 6F 75 6E 73 65 6C 04 + 00 00 37 35 30 33 04 00 00 37 35 31 30 13 00 00 + 53 61 63 68 62 65 61 72 62 2E 20 47 72 6F 75 70 + 20 50 4D 02 00 00 43 55 04 00 00 37 35 33 39 11 + 00 00 54 61 74 65 6E 20 73 74 61 74 74 20 57 6F + 72 74 65 04 00 00 37 35 34 32 14 00 00 53 65 6E + 69 6F 72 20 41 75 64 69 74 20 4D 61 6E 61 67 65 + 72 04 00 00 37 35 34 37 04 00 00 37 35 34 39 04 + 00 00 37 35 35 38 04 00 00 37 35 36 32 12 00 00 + 50 72 6F 6A 65 63 74 20 43 6F 6E 73 75 6C 74 61 + 6E 74 04 00 00 37 35 36 35 0C 00 00 43 6F 6D 6D + 69 73 2D 4B FC 63 68 65 04 00 00 37 35 36 38 04 + 00 00 37 35 37 31 04 00 00 37 35 37 33 13 00 00 + 53 61 63 68 62 65 61 72 62 65 69 74 65 72 20 42 + 65 62 75 04 00 00 37 35 37 34 19 00 00 53 61 63 + 68 62 65 61 72 62 2E 20 52 65 63 68 6E 75 6E 67 + 73 77 65 73 65 6E 04 00 00 37 35 37 37 04 00 00 + 37 35 38 31 13 00 00 48 65 61 64 20 6F 66 20 4C + 41 2F 4C 45 2F 4C 4E 20 46 4D 04 00 00 37 35 39 + 32 04 00 00 37 35 39 33 04 00 00 37 35 39 39 04 + 00 00 37 36 30 31 04 00 00 37 36 32 31 04 00 00 + 37 36 32 36 04 00 00 37 36 32 39 11 00 00 41 63 + 74 75 61 72 69 61 6C 20 41 6E 61 6C 79 73 74 04 + 00 00 37 36 34 31 04 00 00 37 36 34 37 04 00 00 + 37 36 34 38 09 00 00 45 63 6F 6E 6F 6D 69 73 74 + 04 00 00 37 36 34 39 04 00 00 37 36 35 30 04 00 + 00 37 36 35 32 0E 00 00 50 72 6F 6A 65 6B 74 6D + 61 6E 61 67 65 72 04 00 00 37 36 35 39 04 00 00 + 37 36 36 30 12 00 00 4B 6F 6E 7A 65 72 6E 6B 6F + 6F 72 64 69 6E 61 74 6F 72 04 00 00 37 36 36 31 + 04 00 00 37 36 36 33 04 00 00 37 36 38 31 04 00 + 00 37 36 38 36 04 00 00 37 36 38 38 04 00 00 37 + 36 39 30 04 00 00 37 36 39 32 04 00 00 37 36 39 + 37 04 00 00 37 37 30 38 18 00 00 4D 65 6D 62 65 + 72 20 6F 66 20 45 78 65 63 75 74 69 76 65 20 54 + 65 61 6D 04 00 00 37 37 31 33 0E 00 00 49 6E 6E + 65 6E 61 72 63 68 69 74 65 6B 74 04 00 00 37 37 + 32 33 0E 00 00 53 65 6E 69 6F 72 20 41 63 74 75 + 61 72 79 04 00 00 37 37 33 31 04 00 00 37 37 34 + 35 04 00 00 37 37 35 33 04 00 00 37 37 35 36 04 + 00 00 37 37 37 37 04 00 00 37 37 37 38 04 00 00 + 37 37 38 33 04 00 00 37 37 38 37 12 00 00 48 65 + 61 64 20 6F 66 20 44 65 70 61 72 74 6D 65 6E 74 + 04 00 00 37 37 38 39 04 00 00 37 37 39 38 04 00 + 00 37 38 31 38 04 00 00 37 38 33 35 04 00 00 37 + 38 33 36 04 00 00 37 38 37 30 04 00 00 37 38 37 + 32 1A 00 00 54 4C 20 4D 61 72 69 6E 65 20 55 57 + 20 47 72 65 61 74 65 72 20 43 68 69 6E 61 03 00 + 00 32 30 39 12 00 00 50 65 72 73 6F 6E 61 6C 20 + 41 73 73 69 73 74 61 6E 74 03 00 00 32 31 30 18 + 00 00 48 65 61 64 20 4D 67 6D 74 26 20 46 69 6E + 2E 20 53 65 72 76 69 63 65 73 04 00 00 38 35 33 + 37 13 00 00 44 61 74 61 20 49 54 2D 4B 6F 6F 72 + 64 69 6E 61 74 6F 72 03 00 00 34 39 38 05 00 00 + 31 30 35 32 33 05 00 00 31 30 31 36 34 04 00 00 + 38 36 33 31 03 00 00 32 34 34 03 00 00 32 34 35 + 04 00 00 38 36 30 34 04 00 00 36 35 36 39 10 00 + 00 50 72 69 63 69 70 61 6C 20 4F 66 66 69 63 65 + 72 04 00 00 38 36 30 31 05 00 00 31 30 34 32 39 + 03 00 00 31 32 34 04 00 00 35 38 36 32 05 00 00 + 31 31 30 32 37 03 00 00 35 36 32 03 00 00 35 30 + 32 04 00 00 33 39 33 32 04 00 00 38 39 32 39 14 + 00 00 48 65 61 64 20 48 75 6D 61 6E 20 52 65 73 + 6F 75 72 63 65 73 05 00 00 31 31 38 33 33 04 00 + 00 35 31 36 38 04 00 00 38 35 37 37 04 00 00 38 + 36 37 33 03 00 00 33 33 38 03 00 00 33 33 37 14 + 00 00 53 65 6E 69 6F 72 20 41 64 6D 69 6E 69 73 + 74 72 61 74 6F 72 04 00 00 38 36 38 33 03 00 00 + 32 34 37 1C 00 00 4D 61 6E 61 67 65 72 20 4E 6F + 6E 2D 4C 69 66 65 20 52 65 69 6E 73 75 72 61 6E + 63 65 04 00 00 37 30 32 30 04 00 00 33 38 36 34 + 03 00 00 33 38 38 1A 00 00 48 65 61 64 20 6F 66 + 20 46 69 6E 61 6E 63 69 61 6C 20 41 64 76 69 73 + 6F 72 79 03 00 00 32 31 32 1D 00 00 41 73 73 74 + 2E 20 74 6F 20 43 68 69 65 66 20 52 65 70 72 65 + 73 65 6E 74 61 74 69 76 65 05 00 00 31 30 30 37 + 39 03 00 00 32 31 39 1A 00 00 43 6F 6E 74 72 6F + 6C 6C 65 72 2C 20 52 65 69 6E 73 2E 41 63 63 6F + 75 6E 74 73 03 00 00 33 36 36 03 00 00 31 33 35 + 03 00 00 35 33 39 03 00 00 35 30 39 1D 00 00 48 + 65 61 64 20 6F 66 20 43 6F 72 70 6F 72 61 74 65 + 20 44 65 76 65 6C 6F 70 6D 65 6E 74 03 00 00 31 + 34 35 17 00 00 52 65 70 72 65 73 65 6E 74 61 74 + 69 76 65 20 50 72 6F 70 65 72 74 79 03 00 00 35 + 32 32 0E 00 00 4D 61 72 69 6E 65 20 4D 61 6E 61 + 67 65 72 03 00 00 35 32 31 04 00 00 33 37 35 38 + 04 00 00 36 39 37 36 04 00 00 36 31 35 30 04 00 + 00 39 31 35 34 19 00 00 48 65 61 64 20 52 65 69 + 6E 73 75 72 61 6E 63 65 20 41 63 63 6F 75 6E 74 + 2E 02 00 00 45 53 02 00 00 53 4F 04 00 00 32 39 + 33 34 10 00 00 55 6E 64 65 72 77 72 69 74 65 72 + 20 53 6F 52 69 02 00 00 45 59 04 00 00 32 39 36 + 37 12 00 00 41 64 6D 69 6E 69 73 74 72 61 74 69 + 6F 6E 20 53 53 43 02 00 00 45 50 02 00 00 50 31 + 04 00 00 32 39 38 36 18 00 00 55 57 20 53 75 70 + 70 6F 72 74 20 46 61 63 2E 20 50 72 6F 70 65 72 + 74 79 04 00 00 33 30 35 35 0D 00 00 53 65 63 72 + 65 74 61 72 79 20 53 53 43 04 00 00 33 30 38 31 + 02 00 00 43 33 04 00 00 33 31 30 32 04 00 00 33 + 31 30 33 04 00 00 33 31 30 37 02 00 00 45 4F 04 + 00 00 33 31 31 31 04 00 00 33 31 31 32 02 00 00 + 45 45 04 00 00 33 31 31 36 18 00 00 48 65 61 64 + 20 41 70 70 6C 69 63 61 74 69 6F 6E 20 53 75 70 + 70 6F 72 74 02 00 00 45 44 04 00 00 33 31 31 37 + 04 00 00 33 31 33 31 13 00 00 42 75 73 69 6E 65 + 73 73 20 45 78 70 65 72 74 20 53 53 43 04 00 00 + 33 31 33 33 02 00 00 53 31 04 00 00 33 31 34 34 + 11 00 00 55 6E 64 65 72 77 72 69 74 65 72 20 53 + 57 49 46 54 02 00 00 45 47 04 00 00 33 31 34 38 + 11 00 00 46 69 6E 61 6E 63 69 61 6C 20 41 6E 61 + 6C 79 73 74 04 00 00 38 32 34 30 10 00 00 4C 65 + 67 61 6C 20 43 6F 6E 73 75 6C 74 61 6E 74 04 00 + 00 38 32 34 38 04 00 00 38 32 35 32 04 00 00 38 + 32 35 35 04 00 00 38 32 36 30 04 00 00 38 32 36 + 39 18 00 00 41 73 73 2E 20 53 74 61 62 73 73 74 + 2E 20 53 69 63 68 65 72 68 65 69 74 04 00 00 38 + 32 37 32 04 00 00 38 32 37 35 04 00 00 38 32 37 + 39 16 00 00 46 FC 68 72 75 6E 67 73 61 73 73 69 + 73 74 65 6E 74 69 6E 20 43 43 04 00 00 38 32 38 + 36 19 00 00 53 65 6B 72 65 74 61 72 69 61 74 73 + 6D 69 74 61 72 62 65 69 74 65 72 49 6E 04 00 00 + 38 33 30 38 04 00 00 38 33 33 30 04 00 00 38 33 + 33 35 04 00 00 38 33 33 39 04 00 00 38 33 34 34 + 17 00 00 48 65 61 64 20 6F 66 20 41 63 74 75 61 + 72 69 61 6C 20 50 72 6F 6A 2E 04 00 00 38 33 35 + 34 04 00 00 38 33 35 37 04 00 00 38 33 37 38 04 + 00 00 38 33 38 34 04 00 00 38 33 38 36 04 00 00 + 38 33 38 37 04 00 00 38 33 38 38 04 00 00 38 33 + 39 30 04 00 00 38 34 30 32 04 00 00 38 34 30 35 + 10 00 00 4B 6F 6F 72 64 69 6E 61 74 69 6F 6E 20 + 54 43 45 04 00 00 38 34 30 38 11 00 00 53 65 6E + 69 6F 72 20 41 63 63 6F 75 6E 74 61 6E 74 04 00 + 00 38 34 30 39 15 00 00 41 63 74 75 61 72 69 61 + 6C 20 44 65 76 65 6C 6F 70 6D 65 6E 74 04 00 00 + 38 34 31 37 04 00 00 38 34 32 32 04 00 00 38 34 + 32 35 04 00 00 38 34 32 36 14 00 00 4C 65 69 74 + 65 72 69 6E 20 53 65 6B 72 65 74 61 72 69 61 74 + 04 00 00 38 34 32 38 04 00 00 38 34 33 32 04 00 + 00 38 34 33 36 04 00 00 38 34 33 38 04 00 00 38 + 34 33 39 04 00 00 38 34 34 34 04 00 00 38 34 35 + 30 04 00 00 38 34 35 32 04 00 00 38 34 36 39 04 + 00 00 38 34 37 30 04 00 00 38 34 37 33 04 00 00 + 38 34 37 37 05 00 00 31 31 30 33 37 05 00 00 31 + 31 33 33 33 05 00 00 31 31 36 35 32 05 00 00 31 + 31 36 39 38 05 00 00 31 31 38 36 39 05 00 00 31 + 31 39 36 30 05 00 00 31 31 39 36 34 05 00 00 31 + 31 39 37 34 05 00 00 31 32 30 31 37 05 00 00 31 + 32 30 35 33 05 00 00 31 32 31 38 32 05 00 00 31 + 32 32 39 36 05 00 00 31 32 33 30 30 05 00 00 31 + 32 33 31 32 05 00 00 31 32 36 34 33 05 00 00 31 + 32 36 37 37 05 00 00 31 32 36 38 34 05 00 00 31 + 32 37 32 34 05 00 00 31 32 37 37 38 05 00 00 31 + 32 38 34 37 05 00 00 31 32 38 38 30 05 00 00 31 + 32 39 36 32 05 00 00 31 32 39 37 39 05 00 00 31 + 33 30 30 31 05 00 00 31 33 30 32 34 05 00 00 31 + 33 30 36 33 05 00 00 31 33 30 37 39 05 00 00 31 + 33 31 34 30 05 00 00 31 33 31 34 34 05 00 00 31 + 33 31 34 35 04 00 00 33 37 39 32 04 00 00 35 34 + 35 35 14 00 00 50 72 6F 64 75 63 74 20 4D 61 6E + 61 67 65 72 20 53 61 63 68 04 00 00 35 35 38 36 + 04 00 00 35 36 36 39 04 00 00 37 34 37 38 03 00 + 00 31 30 30 0F 00 00 46 65 6D 6D 65 20 64 65 20 + 6D E9 6E 61 67 65 02 00 00 31 31 13 00 00 47 65 + 73 74 69 6F 6E 20 69 6E 66 6F 72 6D 61 74 69 6F + 6E 02 00 00 31 34 0C 00 00 44 69 72 65 63 74 65 + 75 72 20 52 48 02 00 00 31 35 12 00 00 73 6F 75 + 73 63 2E 46 61 63 20 64 6F 6D 6D 61 67 65 73 02 + 00 00 31 38 14 00 00 44 E9 6C E9 67 75 E9 20 73 + 6F 75 73 63 72 69 70 74 69 6F 6E 02 00 00 32 32 + 0F 00 00 48 F4 74 65 73 73 65 20 61 63 63 65 75 + 69 6C 0A 00 00 73 65 63 72 E9 74 61 69 72 65 02 + 00 00 32 38 02 00 00 32 39 16 00 00 67 65 73 74 + 69 6F 6E 6E 61 69 72 65 20 63 6F 6D 70 74 61 62 + 6C 65 01 00 00 33 20 00 00 52 65 73 70 6F 6E 73 + 69 62 6C 65 20 67 65 73 74 69 6F 6E 20 64 75 20 + 70 65 72 73 6F 6E 6E 65 6C 02 00 00 33 30 16 00 + 00 47 65 73 74 69 6F 6E 6E 61 69 72 65 20 63 6F + 6D 70 74 61 62 6C 65 1E 00 00 52 65 73 70 6F 6E + 73 69 62 6C 65 20 72 69 73 71 75 65 73 20 74 65 + 63 68 6E 69 71 75 65 73 02 00 00 33 34 09 00 00 + 43 6F 6D 70 74 61 62 6C 65 02 00 00 33 36 02 00 + 00 33 38 1D 00 00 52 65 73 70 2E 73 6F 75 73 63 + 2E 72 69 73 71 75 65 73 20 74 65 63 68 6E 69 71 + 75 65 73 02 00 00 33 39 17 00 00 54 65 63 68 6E + 2E 73 65 72 76 69 63 65 73 20 67 E9 6E E9 72 61 + 75 78 17 00 00 52 65 73 70 6F 6E 73 69 62 6C 65 + 20 42 61 63 6B 20 6F 66 66 69 63 65 17 00 00 52 + 65 73 70 6F 6E 73 69 62 6C 65 20 62 75 72 65 61 + 75 74 69 71 75 65 02 00 00 34 33 02 00 00 34 37 + 16 00 00 41 73 73 69 73 74 61 6E 74 65 20 64 65 + 20 73 65 63 74 69 6F 6E 73 19 00 00 41 6E 61 6C + 79 73 74 65 20 72 E9 67 6C 65 75 72 20 73 69 6E + 73 69 74 72 65 02 00 00 35 33 02 00 00 35 34 02 + 00 00 35 39 17 00 00 53 65 63 72 E9 74 61 69 72 + 65 20 64 65 20 44 69 72 65 63 74 69 6F 6E 01 00 + 00 36 17 00 00 52 65 73 70 2E 53 69 6E 69 73 74 + 72 65 20 6A 75 72 69 64 69 71 75 65 02 00 00 36 + 33 02 00 00 36 38 15 00 00 53 6F 75 73 63 72 2E + 74 72 61 69 74 E9 73 20 6A 75 6E 69 6F 72 02 00 + 00 37 32 18 00 00 41 73 73 69 73 74 61 6E 74 20 + 73 6F 75 73 63 2E 20 54 72 61 69 74 E9 73 02 00 + 00 37 36 0C 00 00 53 6F 75 73 63 2E 46 61 63 20 + 52 43 02 00 00 37 37 0E 00 00 52 65 73 70 6F 6E + 73 69 62 6C 65 20 52 48 02 00 00 37 38 1F 00 00 + 22 52 65 73 70 6F 6E 73 69 62 6C 65 20 22 22 73 + 70 65 63 69 61 6C 20 6C 69 6E 65 73 22 22 22 15 + 00 00 53 6F 75 73 63 72 69 70 74 65 75 72 73 20 + 74 72 61 69 74 E9 73 1E 00 00 41 64 6D 69 6E 69 + 73 74 72 61 74 65 75 72 20 73 79 73 74 E8 6D 65 + 20 72 E9 73 65 61 75 78 04 00 00 53 52 49 53 0E + 00 00 43 6C 61 69 6D 73 20 73 75 70 70 6F 72 74 + 15 00 00 41 63 63 6F 75 6E 74 61 6E 74 2F 20 48 + 52 20 61 64 6D 69 6E 2E diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5 new file mode 100755 index 0000000000..e1105745b7 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5 @@ -0,0 +1,515 @@ + 3C 00 18 20 15 00 00 53 + 65 63 72 65 74 61 72 79 2F 66 61 63 2F 61 64 6D + 6E 69 73 2E 02 00 00 43 45 17 00 00 43 6C 69 65 + 6E 74 20 52 65 6C 61 74 69 6F 6E 20 4D 61 6E 61 + 67 65 72 02 00 00 4D 4E 04 00 00 38 37 39 36 04 + 00 00 53 52 4E 4D 02 00 00 4D 55 02 00 00 50 52 + 05 00 00 31 32 30 31 31 02 00 00 4D 47 05 00 00 + 31 31 36 31 30 05 00 00 31 30 34 38 33 02 00 00 + 53 43 05 00 00 31 30 32 31 32 02 00 00 4C 55 04 + 00 00 33 36 32 34 08 00 00 53 52 4E 4D 2C 20 41 + 44 02 00 00 4D 57 04 00 00 37 30 33 33 05 00 00 + 31 32 37 34 30 05 00 00 31 31 35 33 38 02 00 00 + 4D 50 02 00 00 4D 46 05 00 00 31 31 34 37 32 04 + 00 00 32 37 30 38 04 00 00 38 32 34 39 02 00 00 + 4D 54 04 00 00 35 39 38 32 04 00 00 36 39 33 36 + 04 00 00 35 34 31 32 04 00 00 35 38 33 37 07 00 + 00 53 52 4E 4D 2C 20 44 02 00 00 41 52 04 00 00 + 37 33 34 32 05 00 00 31 32 39 33 33 04 00 00 36 + 30 36 32 04 00 00 37 38 35 39 19 00 00 41 73 73 + 65 74 20 26 20 4C 69 61 62 69 6C 69 74 79 20 4D + 61 6E 61 67 65 72 19 00 00 48 65 61 64 20 6F 66 + 20 47 72 6F 75 70 77 61 72 65 26 50 6F 72 74 61 + 6C 73 0F 00 00 48 65 61 64 20 43 49 4F 20 4F 66 + 66 69 63 65 19 00 00 53 65 6E 69 6F 72 20 50 72 + 6F 63 75 72 65 6D 65 6E 74 20 4F 66 66 69 63 2E + 02 00 00 53 44 18 00 00 48 65 61 64 20 6F 66 20 + 53 65 72 76 65 72 20 45 6E 67 69 6E 65 65 72 2E + 13 00 00 43 4D 53 20 44 61 74 61 20 43 6F 6E 73 + 75 6C 74 61 6E 74 15 00 00 44 65 70 75 74 79 20 + 50 6F 72 74 61 6C 20 4D 61 6E 61 67 65 72 0B 00 + 00 54 61 78 20 43 6F 75 6E 73 65 6C 02 00 00 4E + 52 14 00 00 48 65 61 64 20 6F 66 20 41 70 70 2E + 20 49 6E 74 65 67 72 2E 13 00 00 48 65 61 64 20 + 49 54 20 49 6E 76 65 73 74 6D 65 6E 74 73 09 00 + 00 50 72 75 64 65 6E 74 69 61 04 00 00 38 31 39 + 39 04 00 00 33 31 39 30 05 00 00 31 33 30 39 36 + 04 00 00 38 32 34 37 02 00 00 55 54 04 00 00 35 + 32 35 36 04 00 00 35 32 33 36 05 00 00 31 31 30 + 31 36 04 00 00 34 36 30 32 04 00 00 34 36 30 36 + 05 00 00 31 31 38 32 36 05 00 00 31 31 35 36 31 + 04 00 00 32 34 34 38 05 00 00 31 32 32 31 32 04 + 00 00 36 39 33 37 05 00 00 31 30 31 36 32 05 00 + 00 31 32 34 31 34 04 00 00 38 31 38 35 04 00 00 + 36 39 30 33 04 00 00 33 37 31 36 04 00 00 37 30 + 32 39 04 00 00 36 35 36 35 05 00 00 31 32 39 38 + 35 05 00 00 31 31 31 33 30 04 00 00 32 39 30 35 + 04 00 00 38 34 32 34 04 00 00 34 39 35 36 04 00 + 00 35 34 39 36 04 00 00 32 34 35 34 05 00 00 31 + 32 30 32 32 04 00 00 32 31 38 32 04 00 00 37 37 + 38 31 04 00 00 37 34 33 38 04 00 00 37 32 35 31 + 05 00 00 31 31 31 32 38 05 00 00 31 30 32 30 38 + 05 00 00 31 30 36 38 32 04 00 00 36 39 30 36 04 + 00 00 35 32 33 39 04 00 00 38 38 36 31 05 00 00 + 31 31 30 34 33 05 00 00 31 31 37 32 32 04 00 00 + 36 32 38 36 02 00 00 4C 49 04 00 00 37 31 39 36 + 04 00 00 33 31 39 31 04 00 00 34 33 38 30 04 00 + 00 36 30 38 33 04 00 00 38 35 37 35 04 00 00 36 + 38 33 32 04 00 00 33 39 31 35 03 00 00 31 31 33 + 05 00 00 31 32 39 30 31 05 00 00 31 31 35 32 38 + 04 00 00 35 30 36 39 05 00 00 31 32 38 35 35 05 + 00 00 31 32 31 33 30 04 00 00 36 34 35 35 04 00 + 00 34 39 34 31 04 00 00 33 35 32 35 02 00 00 54 + 45 04 00 00 37 30 33 32 04 00 00 35 32 39 37 05 + 00 00 31 30 32 39 32 04 00 00 39 37 39 31 05 00 + 00 31 30 35 31 39 04 00 00 31 35 30 30 04 00 00 + 33 35 37 34 04 00 00 31 39 32 36 04 00 00 33 35 + 36 33 04 00 00 33 39 35 33 05 00 00 31 31 33 32 + 37 05 00 00 31 32 38 33 36 04 00 00 35 35 33 31 + 04 00 00 36 32 37 37 04 00 00 38 39 33 31 04 00 + 00 35 37 33 30 05 00 00 38 30 33 36 31 15 00 00 + 50 6F 73 69 74 69 6F 6E 20 4E 6F 74 20 44 65 66 + 69 6E 65 64 2C 03 00 00 35 34 32 04 00 00 33 35 + 31 37 05 00 00 31 30 35 36 31 05 00 00 31 30 35 + 36 32 05 00 00 31 30 35 36 33 05 00 00 31 30 35 + 36 38 05 00 00 31 30 35 37 37 05 00 00 31 30 35 + 38 30 11 00 00 4C 65 69 74 65 72 20 50 43 20 53 + 75 70 70 6F 72 74 05 00 00 31 30 35 38 31 05 00 + 00 31 30 35 38 35 05 00 00 31 30 35 38 39 05 00 + 00 31 30 36 30 36 05 00 00 31 30 36 31 33 13 00 + 00 43 72 65 64 69 74 20 52 69 73 6B 20 41 6E 61 + 6C 79 73 74 05 00 00 31 30 36 31 35 05 00 00 31 + 30 36 31 37 15 00 00 45 78 70 65 72 74 65 20 4E + 61 74 75 72 67 65 66 61 68 72 65 6E 05 00 00 31 + 30 36 31 38 05 00 00 31 30 36 32 35 05 00 00 31 + 30 36 32 36 05 00 00 31 30 36 33 34 05 00 00 31 + 30 36 33 39 0C 00 00 41 73 73 69 73 74 61 6E 74 + 20 43 58 05 00 00 31 30 36 35 37 05 00 00 31 30 + 36 37 35 0E 00 00 4C 65 69 74 65 72 20 53 75 70 + 70 6F 72 74 05 00 00 31 30 36 37 36 05 00 00 31 + 30 36 38 37 05 00 00 31 30 36 39 32 05 00 00 31 + 30 37 30 34 10 00 00 53 70 65 7A 69 61 6C 69 73 + 74 69 6E 20 47 49 53 05 00 00 31 30 37 33 30 05 + 00 00 31 30 37 33 33 05 00 00 31 30 37 34 33 16 + 00 00 48 65 61 64 20 41 70 70 6C 2E 20 44 65 76 + 65 6C 6F 70 6D 65 6E 74 05 00 00 31 30 37 34 36 + 19 00 00 55 6E 69 76 65 72 73 2E 52 65 6C 61 74 + 69 6F 6E 73 20 4D 61 6E 61 67 65 72 05 00 00 31 + 30 37 34 39 05 00 00 31 30 37 36 38 0A 00 00 48 + 65 61 64 20 6F 66 20 49 46 05 00 00 31 30 37 37 + 39 0E 00 00 54 65 61 6D 20 4C 65 61 64 65 72 20 + 50 56 05 00 00 31 30 37 39 37 05 00 00 31 30 38 + 30 33 05 00 00 31 30 38 30 36 05 00 00 31 30 38 + 30 38 05 00 00 31 30 38 31 34 05 00 00 31 30 38 + 32 31 05 00 00 31 30 38 32 35 11 00 00 54 4C 20 + 52 65 63 68 6E 75 6E 67 73 77 65 73 65 6E 05 00 + 00 31 30 38 32 37 0A 00 00 50 43 20 53 75 70 70 + 6F 72 74 05 00 00 31 30 38 32 38 15 00 00 4C 65 + 69 74 65 72 20 53 70 72 61 63 68 65 6E 64 69 65 + 6E 73 74 05 00 00 31 30 38 33 30 15 00 00 53 65 + 6B 72 65 74 E4 72 69 6E 2F 53 61 63 68 62 65 61 + 72 62 2E 05 00 00 31 30 38 33 34 05 00 00 31 30 + 38 33 35 02 00 00 46 49 05 00 00 31 30 38 33 36 + 05 00 00 31 30 38 34 30 05 00 00 31 30 38 34 36 + 05 00 00 31 30 38 36 31 05 00 00 31 30 38 36 32 + 12 00 00 41 75 64 69 74 20 26 20 49 6E 73 70 65 + 63 74 69 6F 6E 05 00 00 31 30 38 36 33 05 00 00 + 31 30 38 37 31 05 00 00 31 30 38 38 33 05 00 00 + 31 30 38 39 30 05 00 00 31 30 38 39 33 17 00 00 + 41 73 73 69 73 74 61 6E 74 20 74 6F 20 44 65 70 + 74 2E 20 48 65 61 64 05 00 00 31 30 38 39 39 05 + 00 00 31 30 39 30 33 05 00 00 31 30 39 30 35 05 + 00 00 31 30 39 31 33 19 00 00 47 72 6C 2E 20 47 + 72 61 66 69 73 63 68 65 20 50 72 6F 64 75 6B 74 + 69 6F 6E 05 00 00 31 30 39 31 35 05 00 00 31 30 + 39 31 38 05 00 00 31 30 39 32 30 05 00 00 31 30 + 39 32 33 05 00 00 31 30 39 32 34 05 00 00 31 30 + 39 33 39 05 00 00 31 30 39 34 32 05 00 00 31 30 + 39 34 33 05 00 00 31 30 39 35 31 05 00 00 31 30 + 39 35 35 05 00 00 31 30 39 35 37 13 00 00 54 65 + 61 6D 6C 65 61 64 65 72 20 52 65 73 65 61 72 63 + 68 05 00 00 31 30 39 36 32 05 00 00 31 30 39 37 + 30 05 00 00 31 30 39 37 34 05 00 00 31 30 39 37 + 35 05 00 00 31 30 39 37 36 05 00 00 31 30 39 38 + 38 05 00 00 31 30 39 39 36 05 00 00 31 31 30 30 + 33 05 00 00 31 31 30 30 34 02 00 00 4D 44 05 00 + 00 31 31 30 30 38 12 00 00 48 65 61 64 20 44 69 + 76 69 73 69 6F 6E 61 6C 20 4D 44 05 00 00 31 31 + 30 30 39 05 00 00 31 31 30 31 32 05 00 00 31 31 + 30 31 33 05 00 00 31 31 30 31 34 16 00 00 47 72 + 75 70 70 65 6E 6C 65 69 74 65 72 20 4D 61 74 65 + 72 69 61 6C 05 00 00 31 31 30 32 33 02 00 00 4B + 42 05 00 00 31 31 30 32 38 0E 00 00 4B 42 4D 2D + 50 72 61 6B 74 69 6B 61 6E 74 05 00 00 31 31 30 + 32 39 10 00 00 4B 42 4D 2D 50 72 61 6B 74 69 6B + 61 6E 74 69 6E 05 00 00 31 31 30 33 30 05 00 00 + 31 31 30 33 31 05 00 00 31 31 30 33 33 05 00 00 + 31 31 30 33 34 05 00 00 31 31 30 33 35 19 00 00 + 55 57 20 4D 67 20 54 72 65 61 74 79 20 50 72 6F + 70 2E 20 26 20 43 61 73 2E 05 00 00 31 31 30 33 + 36 05 00 00 31 31 30 33 38 05 00 00 31 31 30 33 + 39 17 00 00 55 53 20 47 41 41 50 20 52 65 70 6F + 72 74 2E 20 4D 61 6E 61 67 65 72 05 00 00 31 31 + 30 34 30 19 00 00 50 72 6F 63 65 73 73 20 4D 61 + 6E 61 67 2E 20 46 69 6E 26 43 6F 6E 74 72 2E 05 + 00 00 31 31 30 34 34 14 00 00 4C 65 67 61 6C 20 + 43 6C 61 69 6D 73 20 43 6F 75 6E 73 65 6C 05 00 + 00 31 31 30 35 31 05 00 00 31 31 30 35 37 05 00 + 00 31 31 30 36 32 05 00 00 31 31 30 37 30 05 00 + 00 31 31 30 37 32 05 00 00 31 31 30 37 37 05 00 + 00 31 31 30 37 38 05 00 00 31 31 30 38 30 05 00 + 00 31 31 30 38 31 19 00 00 54 65 61 6D 6C 65 69 + 74 65 72 69 6E 20 53 65 6B 72 65 74 2E 2F 56 65 + 72 77 05 00 00 31 31 30 38 32 0E 00 00 53 65 6E + 69 6F 72 20 41 6E 61 6C 79 73 74 02 00 00 47 4F + 05 00 00 31 31 30 38 36 05 00 00 31 31 30 38 37 + 05 00 00 31 31 30 38 38 05 00 00 31 31 30 38 39 + 15 00 00 53 74 76 2E 20 42 65 74 72 69 65 62 73 + 6C 65 69 74 65 72 69 6E 05 00 00 31 31 30 39 30 + 05 00 00 31 31 30 39 31 05 00 00 31 31 30 39 34 + 05 00 00 31 31 30 39 36 05 00 00 31 31 30 39 38 + 05 00 00 31 31 30 39 39 05 00 00 31 31 31 30 30 + 05 00 00 31 31 31 30 31 05 00 00 31 31 31 30 32 + 05 00 00 31 31 31 30 33 05 00 00 31 31 31 30 39 + 05 00 00 31 31 31 33 33 05 00 00 31 31 31 33 35 + 05 00 00 31 31 31 33 38 0A 00 00 4B FC 63 68 65 + 6E 63 68 65 66 05 00 00 31 31 31 33 39 05 00 00 + 31 31 31 34 32 05 00 00 31 31 31 34 34 05 00 00 + 31 31 31 34 35 05 00 00 31 31 31 34 36 16 00 00 + 48 65 61 64 20 6F 66 20 54 65 63 68 2E 20 54 72 + 61 69 6E 69 6E 67 05 00 00 31 31 31 34 37 19 00 + 00 42 65 74 72 69 65 62 73 6C 65 69 74 65 72 69 + 6E 20 52 65 73 74 2E 20 47 4F 05 00 00 31 31 31 + 35 33 05 00 00 31 31 31 35 35 19 00 00 54 65 6C + 65 6D 61 74 69 6B 20 53 79 73 74 65 6D 69 6E 67 + 65 6E 69 65 75 72 05 00 00 31 31 31 35 38 05 00 + 00 31 31 31 36 30 05 00 00 31 31 31 36 35 05 00 + 00 31 31 31 36 37 05 00 00 31 31 31 36 38 05 00 + 00 31 31 31 36 39 05 00 00 31 31 31 37 30 17 00 + 00 48 6F 74 65 6C 66 61 63 68 61 73 73 69 73 74 + 65 6E 74 69 6E 20 4C 4C 05 00 00 31 31 31 37 31 + 05 00 00 31 31 31 37 32 05 00 00 31 31 31 37 33 + 05 00 00 31 31 31 37 34 05 00 00 31 31 31 37 35 + 05 00 00 31 31 31 37 36 05 00 00 31 31 31 37 37 + 05 00 00 31 31 31 37 38 05 00 00 31 31 31 37 39 + 05 00 00 31 31 31 38 30 05 00 00 31 31 31 38 31 + 05 00 00 31 31 31 38 32 05 00 00 31 31 31 38 33 + 05 00 00 31 31 31 38 34 05 00 00 31 31 31 38 35 + 05 00 00 31 31 31 38 37 05 00 00 31 31 31 38 38 + 05 00 00 31 31 31 39 31 05 00 00 31 31 31 39 33 + 05 00 00 31 31 31 39 34 17 00 00 42 65 74 72 69 + 65 62 73 6C 65 69 74 65 72 20 52 65 73 74 2E 20 + 54 55 05 00 00 31 31 31 39 35 05 00 00 31 31 31 + 39 36 05 00 00 31 31 31 39 37 05 00 00 31 31 31 + 39 38 05 00 00 31 31 31 39 39 05 00 00 31 31 32 + 30 30 05 00 00 31 31 32 30 31 05 00 00 31 31 32 + 30 32 05 00 00 31 31 32 30 34 05 00 00 31 31 32 + 30 35 05 00 00 31 31 32 30 36 05 00 00 31 31 32 + 30 37 05 00 00 31 31 32 30 39 05 00 00 31 31 32 + 31 38 14 00 00 49 2D 26 20 44 2D 41 73 73 69 73 + 74 65 6E 74 69 6E 20 4C 4C 05 00 00 31 31 32 31 + 39 12 00 00 50 65 72 73 6F 6E 61 6C 65 6E 74 77 + 69 63 6B 6C 65 72 05 00 00 31 31 32 34 33 05 00 + 00 31 31 32 34 35 05 00 00 31 31 32 34 38 05 00 + 00 31 31 32 34 39 05 00 00 31 31 32 35 30 05 00 + 00 31 31 32 35 39 05 00 00 31 31 32 36 33 05 00 + 00 31 31 32 36 36 19 00 00 53 65 6E 69 6F 72 20 + 41 63 63 6F 75 6E 74 2E 20 43 6F 6E 73 6F 6C 69 + 64 2E 05 00 00 31 31 32 37 31 05 00 00 31 31 32 + 37 32 05 00 00 31 31 32 39 30 05 00 00 31 31 32 + 39 31 05 00 00 31 31 32 39 32 05 00 00 31 31 32 + 39 33 05 00 00 31 31 33 30 36 05 00 00 31 31 33 + 30 38 05 00 00 31 31 33 33 30 05 00 00 31 31 33 + 33 34 05 00 00 31 31 33 33 35 05 00 00 31 31 33 + 34 33 14 00 00 42 65 74 72 69 65 62 73 70 72 61 + 6B 74 69 6B 65 72 2D 4C 4C 05 00 00 31 31 33 35 + 31 16 00 00 4D 69 74 61 72 62 2E 20 57 61 72 65 + 6E 6B 6F 6E 74 72 6F 6C 6C 65 05 00 00 31 31 33 + 35 35 05 00 00 31 31 33 35 38 05 00 00 31 31 33 + 36 34 17 00 00 4C 65 69 74 65 72 69 6E 20 52 65 + 70 72 E4 73 65 6E 74 61 74 69 6F 6E 05 00 00 31 + 31 33 36 38 11 00 00 4A 75 6E 69 6F 72 20 41 63 + 63 6F 75 6E 74 61 6E 74 05 00 00 31 31 33 37 30 + 05 00 00 31 31 33 37 34 05 00 00 31 31 33 37 38 + 14 00 00 46 72 61 6E 7A 2E 20 55 65 62 65 72 73 + 65 74 7A 65 72 69 6E 05 00 00 31 31 33 38 30 14 + 00 00 43 46 4F 20 42 65 72 6D 75 64 61 20 42 72 + 61 6E 63 68 65 73 05 00 00 31 31 33 38 37 0A 00 + 00 33 32 34 2C 20 53 65 6F 75 6C 05 00 00 31 31 + 33 39 39 18 00 00 54 65 61 6D 6C 65 69 74 65 72 + 49 6E 20 53 65 6B 72 65 74 61 72 69 61 74 05 00 + 00 31 31 34 32 35 05 00 00 31 31 34 32 38 05 00 + 00 31 31 34 33 39 05 00 00 31 31 34 34 30 05 00 + 00 31 31 34 34 32 05 00 00 31 31 34 34 34 05 00 + 00 31 31 34 34 39 17 00 00 48 65 61 64 20 6F 66 + 20 50 72 69 63 69 6E 67 20 43 6F 6E 74 72 6F 6C + 05 00 00 31 31 34 36 33 05 00 00 31 31 34 36 34 + 18 00 00 42 61 75 6C 65 69 74 65 72 2F 43 41 44 + 20 53 70 65 7A 69 61 6C 69 73 74 05 00 00 31 31 + 34 36 35 05 00 00 31 31 34 36 37 05 00 00 31 31 + 34 37 39 05 00 00 31 31 34 38 39 0D 00 00 54 4C + 20 41 56 2D 54 65 63 68 6E 69 6B 05 00 00 31 31 + 35 30 33 05 00 00 31 31 35 32 31 05 00 00 31 31 + 35 33 31 05 00 00 31 31 35 33 39 05 00 00 31 31 + 35 34 31 05 00 00 31 31 35 34 37 05 00 00 31 31 + 35 34 39 05 00 00 31 31 35 37 39 05 00 00 31 31 + 35 39 33 15 00 00 48 52 2D 4D 49 53 2D 50 72 6F + 6A 65 63 74 6D 61 6E 61 67 65 72 05 00 00 31 31 + 35 39 38 05 00 00 31 31 36 32 33 17 00 00 48 52 + 20 50 72 6F 63 65 73 73 65 73 20 26 20 50 72 6F + 6A 65 63 74 73 05 00 00 31 31 36 32 38 05 00 00 + 31 31 36 33 39 05 00 00 31 31 36 35 31 19 00 00 + 46 72 6F 6E 74 20 4F 66 66 69 63 65 20 26 20 45 + 76 65 6E 74 73 20 4D 67 72 05 00 00 31 31 36 35 + 37 05 00 00 31 31 36 36 38 05 00 00 31 31 36 36 + 39 05 00 00 31 31 36 37 31 05 00 00 31 31 36 37 + 39 05 00 00 31 31 36 38 31 12 00 00 54 65 61 6D + 6C 65 69 74 65 72 20 45 6C 65 6B 74 72 6F 05 00 + 00 31 31 36 38 34 05 00 00 31 31 36 38 36 05 00 + 00 31 31 36 38 37 05 00 00 31 31 36 38 38 05 00 + 00 31 30 35 39 33 05 00 00 31 31 35 36 39 05 00 + 00 31 31 35 33 30 02 00 00 4C 53 04 00 00 34 33 + 32 37 04 00 00 36 39 34 37 05 00 00 31 32 31 34 + 31 05 00 00 31 31 30 37 34 04 00 00 39 35 36 33 + 05 00 00 31 30 38 33 37 04 00 00 38 33 38 31 05 + 00 00 31 30 31 39 38 05 00 00 31 31 30 35 36 09 + 00 00 53 52 4E 4D 2C 20 44 2F 50 05 00 00 31 31 + 30 30 32 04 00 00 34 32 32 33 04 00 00 37 32 37 + 30 02 00 00 53 4E 04 00 00 38 38 31 38 05 00 00 + 31 31 33 34 38 04 00 00 37 31 36 37 04 00 00 35 + 39 39 30 04 00 00 36 32 35 32 02 00 00 50 42 05 + 00 00 31 30 39 31 36 05 00 00 31 30 39 39 30 04 + 00 00 37 32 32 35 04 00 00 35 35 31 35 04 00 00 + 33 33 38 32 05 00 00 31 30 39 30 32 05 00 00 31 + 32 33 38 34 04 00 00 39 37 38 35 04 00 00 35 30 + 31 34 04 00 00 33 33 30 37 07 00 00 42 65 72 6D + 75 64 61 05 00 00 46 41 4C 53 45 04 00 00 39 35 + 30 37 04 00 00 35 31 30 39 04 00 00 36 31 38 32 + 04 00 00 36 32 32 39 04 00 00 33 36 37 35 04 00 + 00 39 38 36 33 05 00 00 31 31 39 34 34 04 00 00 + 38 31 36 38 04 00 00 38 37 31 35 04 00 00 37 31 + 37 38 05 00 00 31 32 37 39 35 04 00 00 36 36 39 + 31 04 00 00 36 31 34 35 04 00 00 36 39 39 32 05 + 00 00 31 31 30 37 35 04 00 00 39 37 34 33 04 00 + 00 36 30 35 30 04 00 00 38 36 36 35 04 00 00 33 + 39 37 38 04 00 00 34 30 35 36 05 00 00 31 30 33 + 30 38 04 00 00 34 36 31 39 04 00 00 33 32 37 31 + 05 00 00 31 30 37 35 35 04 00 00 38 32 38 31 05 + 00 00 31 32 30 39 35 05 00 00 31 32 33 38 31 05 + 00 00 31 30 39 32 31 05 00 00 31 30 39 33 36 04 + 00 00 36 38 34 31 04 00 00 33 39 30 35 04 00 00 + 33 32 32 39 04 00 00 37 35 38 32 05 00 00 31 31 + 35 33 32 04 00 00 36 37 32 39 05 00 00 31 32 30 + 30 31 05 00 00 31 32 30 30 35 05 00 00 31 32 30 + 31 32 05 00 00 31 32 30 31 33 05 00 00 31 32 30 + 32 31 05 00 00 31 32 30 32 35 05 00 00 31 32 30 + 32 36 05 00 00 31 32 30 33 31 05 00 00 31 32 30 + 34 39 05 00 00 31 32 30 36 30 05 00 00 31 32 30 + 36 31 05 00 00 31 32 30 36 32 05 00 00 31 32 30 + 37 38 05 00 00 31 32 30 38 31 05 00 00 31 32 30 + 38 35 15 00 00 53 61 63 68 62 65 61 72 62 65 69 + 74 65 72 69 6E 20 42 65 62 75 05 00 00 31 32 30 + 38 36 05 00 00 31 32 30 38 37 05 00 00 31 32 30 + 38 39 05 00 00 31 32 30 39 32 18 00 00 41 73 73 + 69 73 74 65 6E 74 69 6E 20 56 52 2D 50 72 E4 73 + 69 64 65 6E 74 05 00 00 31 32 30 39 34 05 00 00 + 31 32 30 39 38 05 00 00 31 32 30 39 39 05 00 00 + 31 32 31 30 30 05 00 00 31 32 31 30 37 05 00 00 + 31 32 31 30 39 05 00 00 31 32 31 31 30 05 00 00 + 31 32 31 32 31 05 00 00 31 32 31 32 32 02 00 00 + 41 50 05 00 00 31 32 31 32 38 05 00 00 31 32 31 + 32 39 05 00 00 31 32 31 33 31 16 00 00 41 64 76 + 65 72 74 69 73 69 6E 67 20 53 70 65 63 69 61 6C + 69 73 74 05 00 00 31 32 31 33 33 05 00 00 31 32 + 31 33 37 05 00 00 31 32 31 33 38 05 00 00 31 32 + 31 35 38 05 00 00 31 32 31 36 31 05 00 00 31 32 + 31 36 32 05 00 00 31 32 31 36 33 05 00 00 31 32 + 31 36 35 05 00 00 31 32 31 38 31 05 00 00 31 32 + 31 38 34 05 00 00 31 32 31 38 39 05 00 00 31 32 + 31 39 30 05 00 00 31 32 31 39 31 05 00 00 31 32 + 31 39 38 05 00 00 31 32 32 30 31 05 00 00 31 32 + 32 30 38 12 00 00 4B 69 6F 73 6B 6D 69 74 61 72 + 62 65 69 74 65 72 69 6E 05 00 00 31 32 32 31 30 + 15 00 00 4F 70 65 72 61 74 69 6F 6E 73 20 4D 61 + 6E 61 67 65 72 20 43 58 05 00 00 31 32 32 31 36 + 0A 00 00 48 65 61 64 20 6F 66 20 43 50 11 00 00 + 4D 61 6E 68 61 74 74 61 6E 20 4E 59 2C 20 55 53 + 41 05 00 00 31 32 32 31 38 05 00 00 31 32 32 32 + 31 02 00 00 41 41 05 00 00 31 32 32 32 33 05 00 + 00 31 32 32 32 39 05 00 00 31 32 32 33 31 05 00 + 00 31 32 32 33 34 05 00 00 31 32 32 34 37 05 00 + 00 31 32 32 35 31 05 00 00 31 32 32 36 37 05 00 + 00 31 32 32 37 38 11 00 00 4A 75 6E 69 6F 72 20 + 43 6F 6E 74 72 6F 6C 6C 65 72 05 00 00 31 32 32 + 38 33 05 00 00 31 32 32 39 30 05 00 00 31 32 32 + 39 31 05 00 00 31 32 33 30 33 05 00 00 31 32 33 + 30 35 05 00 00 31 32 33 31 33 09 00 00 41 73 73 + 6F 63 69 61 74 65 05 00 00 31 32 33 31 34 05 00 + 00 31 32 33 32 32 15 00 00 4C 65 69 74 65 72 20 + 53 79 73 74 65 6D 2D 54 65 63 68 6E 69 6B 05 00 + 00 31 32 33 32 33 19 00 00 41 72 63 68 69 76 65 + 20 26 20 52 65 63 6F 72 64 73 20 4D 61 6E 61 67 + 65 72 05 00 00 31 32 33 32 34 05 00 00 31 32 33 + 32 37 05 00 00 31 32 33 33 36 05 00 00 31 32 33 + 33 37 05 00 00 31 32 33 33 38 05 00 00 31 32 33 + 34 36 05 00 00 31 32 33 34 37 05 00 00 31 32 33 + 36 30 05 00 00 31 32 33 36 37 05 00 00 31 32 33 + 37 37 05 00 00 31 32 33 38 33 05 00 00 31 32 34 + 31 36 16 00 00 48 65 61 64 20 6F 66 20 47 72 6F + 75 70 20 52 65 73 65 72 76 65 73 05 00 00 31 32 + 34 32 37 12 00 00 46 FC 68 72 75 6E 67 73 2D 41 + 73 73 69 73 74 65 6E 74 05 00 00 31 32 34 34 34 + 05 00 00 31 32 34 35 30 05 00 00 31 32 34 35 31 + 05 00 00 31 32 34 35 33 05 00 00 31 32 34 35 39 + 19 00 00 53 74 76 2E 20 48 61 75 73 77 69 72 74 + 73 63 68 2E 4C 65 69 74 65 72 69 6E 05 00 00 31 + 32 34 36 30 02 00 00 48 4D 05 00 00 31 32 34 36 + 31 10 00 00 48 4D 53 2D 50 72 61 6B 74 69 6B 61 + 6E 74 69 6E 05 00 00 31 32 34 36 32 0E 00 00 48 + 4D 53 2D 50 72 61 6B 74 69 6B 61 6E 74 05 00 00 + 31 32 34 36 33 05 00 00 31 32 34 36 34 05 00 00 + 31 32 34 36 35 05 00 00 31 32 34 36 37 05 00 00 + 31 32 34 36 38 05 00 00 31 32 34 36 39 13 00 00 + 53 65 72 76 69 63 65 66 61 63 68 6C 65 68 72 6C + 69 6E 67 05 00 00 31 32 34 37 30 05 00 00 31 32 + 34 37 31 05 00 00 31 32 34 37 32 05 00 00 31 32 + 34 37 34 05 00 00 31 32 34 37 35 05 00 00 31 32 + 34 37 36 05 00 00 31 32 34 37 37 05 00 00 31 32 + 34 37 38 05 00 00 31 32 34 38 30 05 00 00 31 32 + 34 38 31 05 00 00 31 32 34 38 33 05 00 00 31 32 + 34 38 34 05 00 00 31 32 34 38 35 05 00 00 31 32 + 34 38 36 05 00 00 31 32 34 38 37 05 00 00 31 32 + 34 38 38 05 00 00 31 32 34 38 39 05 00 00 31 32 + 34 39 30 05 00 00 31 32 34 39 31 05 00 00 31 32 + 34 39 32 05 00 00 31 32 34 39 33 05 00 00 31 32 + 35 30 30 17 00 00 42 65 74 72 69 65 62 73 6C 65 + 69 74 65 72 20 52 65 73 74 2E 20 4B 48 05 00 00 + 31 32 35 30 31 05 00 00 31 32 35 30 32 11 00 00 + 48 61 75 73 77 69 72 74 73 63 68 61 66 74 73 6D + 2E 05 00 00 31 32 35 30 36 05 00 00 31 32 35 30 + 37 05 00 00 31 32 35 31 31 05 00 00 31 32 35 31 + 33 05 00 00 31 32 35 31 36 17 00 00 53 65 6E 69 + 6F 72 20 4D 65 64 69 61 20 43 6F 6E 73 75 6C 74 + 61 6E 74 05 00 00 31 32 35 31 37 05 00 00 31 32 + 35 31 38 05 00 00 31 32 35 31 39 19 00 00 4C 65 + 69 74 65 72 20 4C 61 67 65 72 62 65 77 69 72 74 + 73 63 68 61 66 74 2E 05 00 00 31 32 35 32 30 0D + 00 00 4E 69 67 68 74 20 41 75 64 69 74 6F 72 05 + 00 00 31 32 35 32 36 13 00 00 4C 65 69 74 65 72 + 20 4A 75 6E 69 6F 72 20 50 6F 77 65 72 05 00 00 + 31 32 35 33 32 05 00 00 31 32 35 33 33 05 00 00 + 31 32 35 33 36 05 00 00 31 32 35 33 37 17 00 00 + 41 73 73 69 73 74 61 6E 74 20 6F 66 20 44 65 70 + 61 72 74 6D 65 6E 74 05 00 00 31 32 35 33 38 05 + 00 00 31 32 35 34 30 05 00 00 31 32 35 34 35 05 + 00 00 31 32 35 35 31 05 00 00 31 32 35 35 32 05 + 00 00 31 32 35 36 32 15 00 00 41 75 64 69 6F 2D + 56 69 64 65 6F 20 53 75 70 70 6F 72 74 65 72 05 + 00 00 31 32 35 36 34 0E 00 00 43 68 65 66 20 64 + 65 20 50 61 72 74 69 65 05 00 00 31 32 35 36 38 + 05 00 00 31 32 35 37 31 05 00 00 31 32 35 37 32 + 13 00 00 53 74 76 2E 20 42 65 74 72 69 65 62 73 + 6C 65 69 74 65 72 05 00 00 31 32 35 37 35 05 00 + 00 31 32 35 37 36 05 00 00 31 32 35 37 37 05 00 + 00 31 32 35 37 38 05 00 00 31 32 35 38 30 11 00 + 00 53 6F 63 69 61 6C 20 43 6F 6E 73 75 6C 74 61 + 6E 74 05 00 00 31 32 35 38 31 05 00 00 31 32 35 + 38 33 14 00 00 54 65 61 6D 6C 2E 20 52 E9 63 2E + 20 41 64 6C 69 73 77 69 6C 05 00 00 31 32 35 38 + 39 05 00 00 31 32 35 39 31 05 00 00 31 32 36 30 + 35 05 00 00 31 32 36 30 36 05 00 00 31 32 36 30 + 39 0B 00 00 43 68 65 66 20 64 65 20 42 61 72 05 + 00 00 31 32 36 31 32 19 00 00 48 65 61 64 20 43 + 6F 72 53 70 6F 6E 73 26 50 75 62 6C 41 66 66 61 + 69 72 73 05 00 00 31 32 36 32 34 05 00 00 31 32 + 36 33 33 05 00 00 31 32 36 34 34 05 00 00 31 32 + 36 35 39 05 00 00 31 32 36 36 31 05 00 00 31 32 + 36 36 33 05 00 00 31 32 36 36 34 05 00 00 31 32 + 36 36 37 05 00 00 31 32 36 36 38 05 00 00 31 32 + 36 37 38 05 00 00 31 32 36 38 30 05 00 00 31 32 + 36 38 31 05 00 00 31 32 36 38 32 05 00 00 31 32 + 36 38 33 13 00 00 53 69 63 68 65 72 68 65 69 74 + 73 66 61 63 68 6D 61 6E 6E 05 00 00 31 32 36 39 + 34 05 00 00 31 32 36 39 35 05 00 00 31 32 36 39 + 36 11 00 00 53 61 63 68 62 65 61 72 62 65 69 74 + 65 72 20 50 56 05 00 00 31 32 36 39 37 05 00 00 + 31 32 37 30 31 05 00 00 31 32 37 31 32 05 00 00 + 31 32 37 31 39 05 00 00 31 32 37 32 30 05 00 00 + 31 32 37 32 33 05 00 00 31 32 37 32 38 05 00 00 + 31 32 37 33 39 05 00 00 31 32 37 34 31 0A 00 00 + 41 6C 6C 72 6F 75 6E 64 65 72 05 00 00 31 32 37 + 34 32 05 00 00 31 32 37 34 39 16 00 00 4D 67 72 + 20 4B 6E 6F 77 6C 65 64 67 65 20 4E 65 74 77 6F + 72 6B 73 05 00 00 31 32 37 35 31 05 00 00 31 32 + 37 36 35 05 00 00 31 32 37 36 36 05 00 00 31 32 + 37 36 39 05 00 00 31 32 37 37 30 08 00 00 4F 70 + 65 72 61 74 6F 72 05 00 00 31 32 37 38 34 16 00 + 00 41 73 73 69 73 74 61 6E 74 20 4A 75 6E 69 6F + 72 20 50 6F 77 65 72 05 00 00 31 32 37 38 35 15 + 00 00 4D 75 6C 74 69 6D 65 64 69 61 20 53 70 65 + 63 69 61 6C 69 73 74 05 00 00 31 32 37 38 37 05 + 00 00 31 32 37 39 30 0C 00 00 33 32 34 2C 20 42 + 65 69 6A 69 6E 67 05 00 00 31 32 37 39 32 05 00 + 00 31 32 37 39 34 05 00 00 31 32 37 39 38 05 00 + 00 31 32 37 39 39 05 00 00 31 32 38 30 31 05 00 + 00 31 32 38 30 32 05 00 00 31 32 38 30 33 05 00 + 00 31 32 38 30 37 05 00 00 31 32 38 31 30 05 00 + 00 31 32 38 31 31 05 00 00 31 32 38 31 33 05 00 + 00 31 32 38 31 36 05 00 00 31 32 38 31 37 05 00 + 00 31 32 38 31 38 05 00 00 31 32 38 31 39 05 00 + 00 31 32 38 32 30 05 00 00 31 32 38 32 32 05 00 + 00 31 32 38 32 33 05 00 00 31 32 38 32 35 05 00 + 00 31 32 38 32 36 19 00 00 48 65 61 64 20 50 72 + 6F 63 65 73 73 26 50 65 72 66 6F 72 6D 2E 4D 67 + 74 2E 05 00 00 31 32 38 32 38 05 00 00 31 32 38 + 33 30 05 00 00 31 32 38 33 31 05 00 00 31 32 38 + 33 33 05 00 00 31 32 38 33 35 05 00 00 31 32 38 + 33 37 05 00 00 31 32 38 33 38 05 00 00 31 32 38 + 33 39 05 00 00 31 32 38 34 31 05 00 00 31 32 38 + 34 33 05 00 00 31 32 38 35 33 05 00 00 31 32 38 + 35 38 05 00 00 31 32 38 35 39 05 00 00 31 32 38 + 36 31 05 00 00 31 32 38 37 31 05 00 00 31 32 38 + 37 39 05 00 00 31 32 38 38 31 05 00 00 31 32 38 + 38 32 05 00 00 31 32 38 38 33 05 00 00 31 32 38 + 38 34 05 00 00 31 32 38 38 35 05 00 00 31 32 38 + 38 37 05 00 00 31 32 38 39 30 05 00 00 31 32 39 + 30 33 05 00 00 31 32 39 30 34 05 00 00 31 32 39 + 30 35 05 00 00 31 32 39 31 37 10 00 00 47 72 6F + 75 70 20 43 6F 6E 74 72 6F 6C 6C 65 72 05 00 00 + 31 32 39 32 32 05 00 00 31 32 39 32 35 05 00 00 + 31 32 39 32 36 19 00 00 49 6E 74 65 72 6E 61 74 + 69 6F 6E 61 6C 20 54 61 78 20 43 6F 75 6E 73 65 + 6C 05 00 00 31 32 39 35 31 05 00 00 31 32 39 35 + 33 05 00 00 31 32 39 35 36 05 00 00 31 32 39 35 + 38 19 00 00 4A 75 6E 2E 20 41 70 70 6C 69 63 61 + 74 69 6F 6E 20 45 6E 67 69 6E 65 65 72 05 00 00 + 31 32 39 36 38 05 00 00 31 32 39 37 33 05 00 00 + 31 32 39 37 34 05 00 00 31 32 39 38 31 05 00 00 + 31 32 39 39 39 05 00 00 31 33 30 30 30 05 00 00 + 31 33 30 30 33 05 00 00 31 33 30 30 34 05 00 00 + 31 33 30 31 39 05 00 00 31 33 30 32 39 05 00 00 + 31 33 30 33 32 05 00 00 31 33 30 33 34 05 00 00 + 31 33 30 34 31 05 00 00 31 33 30 36 31 05 00 00 + 31 33 30 36 34 05 00 00 31 33 30 36 35 05 00 00 + 31 33 30 38 35 05 00 00 31 33 30 38 36 05 00 00 + 31 33 31 30 31 05 00 00 31 33 31 33 30 05 00 00 + 31 33 31 33 37 05 00 00 31 33 31 34 31 02 00 00 + 4E 59 05 00 00 38 30 30 31 36 1C 00 00 48 65 61 + 64 20 6F 66 20 45 63 6F 6E 6F 6D 69 63 20 52 65 + 73 65 61 72 63 68 20 4E 59 05 00 00 38 30 31 35 + 39 05 00 00 38 30 32 36 35 05 00 00 38 30 35 36 + 39 05 00 00 38 30 31 36 34 26 00 00 48 65 61 64 + 20 6F 66 20 4B 6E 6F 77 6C 65 64 67 65 20 26 20 + 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 4D 67 6E 74 + 2E 2C 06 00 00 41 72 6D 6F 6E 6B 19 00 00 48 65 + 61 64 20 6F 66 20 55 6E 64 65 72 77 72 69 74 69 + 6E 67 20 53 65 72 76 19 00 00 48 65 61 64 20 6F + 66 20 53 74 72 61 74 2E 26 20 44 65 76 2E 20 55 + 6E 69 74 08 00 00 33 32 34 2D 53 6F 75 6C 05 00 + 00 4C 45 47 41 4C 04 00 00 4C 45 31 31 05 00 00 + 38 30 33 35 39 0F 00 00 47 65 6E 65 72 61 6C 20 + 43 6F 75 6E 73 65 6C 03 00 00 30 30 31 09 00 00 + 42 72 75 78 65 6C 6C 65 73 10 00 00 4D 65 64 65 + 78 20 53 70 65 63 69 61 6C 69 73 74 02 00 00 4D + 4F 02 00 00 54 4F 02 00 00 50 46 06 00 00 4C 30 + 30 35 38 32 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6 new file mode 100755 index 0000000000..a937fe447d --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6 @@ -0,0 +1,515 @@ + 3C 00 1A 20 02 00 00 53 4C 02 00 00 + 5A 48 02 00 00 46 50 02 00 00 44 44 02 00 00 49 + 5A 12 00 00 43 75 73 74 6F 64 79 20 4D 61 6E 61 + 67 65 6D 65 6E 74 13 00 00 55 73 65 72 20 53 75 + 70 70 6F 72 74 20 48 69 50 6F 72 74 19 00 00 48 + 65 61 64 20 49 6E 76 65 73 74 6D 65 6E 74 20 43 + 65 6E 74 65 72 20 5A 48 0E 00 00 41 64 6D 69 6E + 69 73 74 72 61 74 69 6F 6E 16 00 00 44 65 70 75 + 74 79 20 44 65 70 61 72 74 6D 65 6E 74 20 48 65 + 61 64 02 00 00 49 47 14 00 00 55 6E 64 65 72 77 + 72 69 74 69 6E 67 20 4D 61 6E 61 67 65 72 11 00 + 00 48 65 61 64 20 46 69 78 65 64 20 49 6E 63 6F + 6D 65 02 00 00 57 49 02 00 00 46 4E 02 00 00 4C + 46 16 00 00 48 65 61 64 20 49 6E 76 65 73 74 6D + 65 6E 74 20 41 64 6D 69 6E 2E 02 00 00 54 41 18 + 00 00 48 65 61 64 20 54 61 63 74 69 63 61 6C 20 + 41 6C 6C 6F 63 61 74 69 6F 6E 18 00 00 4F 70 65 + 72 61 74 69 6F 6E 73 20 26 20 54 61 78 20 4F 66 + 66 69 63 65 72 02 00 00 41 4D 12 00 00 53 65 6E + 69 6F 72 20 43 61 73 75 61 6C 74 79 20 55 57 02 + 00 00 45 51 16 00 00 44 69 76 2E 20 46 69 6E 61 + 6E 63 69 61 6C 20 4F 66 66 69 63 65 72 02 00 00 + 49 49 18 00 00 41 73 73 69 73 74 65 6E 74 69 6E + 20 4C 49 2D 56 65 72 77 61 6C 74 65 72 0C 00 00 + 53 65 63 74 69 6F 6E 20 48 65 61 64 02 00 00 50 + 56 02 00 00 44 55 11 00 00 4C 65 69 74 65 72 20 + 48 79 70 6F 74 68 65 6B 65 6E 19 00 00 48 65 61 + 64 20 53 65 63 74 6F 72 20 53 74 72 61 74 2E 20 + 45 75 72 6F 70 65 0D 00 00 48 65 61 64 20 45 71 + 75 69 74 69 65 73 19 00 00 4C 69 65 67 65 6E 73 + 63 68 61 66 74 65 6E 76 65 72 77 61 6C 74 65 72 + 69 6E 19 00 00 44 65 70 75 74 79 20 48 65 61 64 + 20 49 6E 76 65 73 74 2E 41 64 6D 69 6E 2E 14 00 + 00 4C 65 69 74 65 72 20 4C 49 2D 56 65 72 77 61 + 6C 74 75 6E 67 04 00 00 38 36 37 31 03 00 00 35 + 36 39 03 00 00 31 33 30 04 00 00 31 37 34 30 03 + 00 00 32 30 36 0A 00 00 49 54 20 4D 61 6E 61 67 + 65 72 03 00 00 35 34 31 0C 00 00 49 54 20 45 78 + 65 63 75 74 69 76 65 0E 00 00 4F 66 66 69 63 65 + 20 4D 61 6E 61 67 65 72 04 00 00 35 37 30 32 04 + 00 00 38 35 36 32 18 00 00 4D 67 72 20 52 65 73 + 65 61 72 63 68 20 26 20 43 6F 6D 6D 75 6E 69 63 + 2E 04 00 00 38 35 36 39 04 00 00 36 35 32 31 04 + 00 00 39 31 36 31 03 00 00 35 39 37 04 00 00 32 + 30 34 31 03 00 00 33 36 33 1A 00 00 52 65 63 65 + 70 74 69 6F 6E 69 73 74 2F 54 65 6C 65 70 68 6F + 6E 65 20 4F 70 2E 03 00 00 33 36 34 04 00 00 36 + 30 35 32 0F 00 00 48 75 6D 61 6E 20 52 65 73 6F + 75 72 63 65 73 03 00 00 31 32 38 03 00 00 31 30 + 34 1E 00 00 47 65 6E 65 72 61 6C 20 4D 67 72 20 + 4E 6F 6E 2D 4C 69 66 65 20 28 53 69 6E 67 61 70 + 2E 29 03 00 00 34 39 31 0A 00 00 30 33 2E 30 38 + 2E 31 39 39 38 0A 00 00 31 36 2E 30 38 2E 31 39 + 36 34 0A 00 00 30 31 2E 30 37 2E 31 39 39 38 0A + 00 00 32 34 2E 30 31 2E 31 39 35 36 0A 00 00 30 + 31 2E 30 37 2E 31 39 39 36 0A 00 00 30 34 2E 30 + 36 2E 31 39 36 32 0A 00 00 30 36 2E 30 33 2E 32 + 30 30 30 0A 00 00 31 36 2E 30 36 2E 31 39 36 35 + 0A 00 00 31 35 2E 30 38 2E 32 30 30 30 0A 00 00 + 31 37 2E 30 37 2E 31 39 37 31 0A 00 00 30 31 2E + 30 32 2E 31 39 39 39 0A 00 00 30 35 2E 31 32 2E + 31 39 37 32 0A 00 00 30 32 2E 30 32 2E 32 30 30 + 30 0A 00 00 32 33 2E 30 31 2E 31 39 37 35 0A 00 + 00 30 31 2E 30 39 2E 31 39 39 37 0A 00 00 32 30 + 2E 30 36 2E 31 39 36 39 0A 00 00 30 32 2E 30 36 + 2E 31 39 39 37 0A 00 00 32 31 2E 30 32 2E 31 39 + 37 35 0A 00 00 31 31 2E 30 38 2E 31 39 39 37 0A + 00 00 30 31 2E 30 39 2E 31 39 37 33 0A 00 00 30 + 32 2E 30 35 2E 31 39 37 32 0A 00 00 30 31 2E 30 + 39 2E 31 39 39 35 15 00 00 45 6E 67 69 6E 65 65 + 72 69 6E 67 20 41 73 73 69 73 74 61 6E 74 0A 00 + 00 32 36 2E 30 38 2E 31 39 38 30 0A 00 00 31 39 + 2E 31 30 2E 31 39 39 38 0A 00 00 31 35 2E 30 36 + 2E 31 39 36 30 0A 00 00 30 31 2E 30 34 2E 31 39 + 39 36 0A 00 00 31 39 2E 31 32 2E 31 39 36 34 0A + 00 00 32 37 2E 31 30 2E 31 39 36 36 0A 00 00 32 + 37 2E 30 38 2E 31 39 37 34 0A 00 00 31 30 2E 30 + 37 2E 31 39 39 35 0A 00 00 33 30 2E 31 31 2E 31 + 39 37 30 0A 00 00 31 38 2E 30 33 2E 31 39 39 36 + 0A 00 00 31 37 2E 31 30 2E 31 39 34 38 0A 00 00 + 30 31 2E 30 31 2E 31 39 37 30 0A 00 00 30 36 2E + 31 30 2E 31 39 36 35 0A 00 00 32 36 2E 30 39 2E + 31 39 35 36 0A 00 00 30 33 2E 31 31 2E 31 39 39 + 33 0A 00 00 31 30 2E 30 37 2E 31 39 37 30 0A 00 + 00 30 31 2E 30 32 2E 31 39 39 38 0A 00 00 32 37 + 2E 30 32 2E 31 39 35 39 0A 00 00 30 31 2E 30 36 + 2E 31 39 39 36 0A 00 00 31 30 2E 30 32 2E 31 39 + 36 36 0A 00 00 31 38 2E 31 31 2E 31 39 39 36 27 + 00 00 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 72 + 2F 50 72 6F 70 65 72 74 79 20 50 72 6F 64 75 63 + 74 20 4D 61 6E 61 67 65 72 0A 00 00 30 31 2E 31 + 30 2E 31 39 36 32 0A 00 00 31 36 2E 31 30 2E 31 + 39 39 32 03 00 00 4D 59 52 03 00 00 50 48 50 0A + 00 00 32 38 2E 30 38 2E 31 39 35 34 0A 00 00 31 + 38 2E 30 31 2E 31 39 39 39 0A 00 00 32 35 2E 30 + 35 2E 31 39 37 34 1C 00 00 41 73 73 74 2E 4D 67 + 72 2E 20 54 6F 20 43 6C 69 65 6E 74 20 4D 67 72 + 20 54 65 61 6D 0A 00 00 30 39 2E 30 33 2E 31 39 + 35 35 0A 00 00 30 31 2E 30 37 2E 32 30 30 30 0A + 00 00 30 33 2E 30 33 2E 31 39 35 36 0A 00 00 31 + 32 2E 30 32 2E 31 39 39 36 0A 00 00 30 31 2E 30 + 39 2E 32 30 30 30 03 00 00 32 35 36 0A 00 00 32 + 31 2E 31 31 2E 31 39 35 39 0A 00 00 32 36 2E 30 + 39 2E 31 39 36 35 0A 00 00 30 31 2E 31 31 2E 31 + 39 39 38 02 00 00 6E 6F 0A 00 00 31 33 2E 30 39 + 2E 31 39 36 39 1C 00 00 41 73 73 6F 63 69 61 74 + 65 20 46 69 6E 61 6E 63 69 61 6C 20 41 64 76 69 + 73 6F 72 79 03 00 00 79 65 73 0A 00 00 30 35 2E + 31 32 2E 31 39 35 36 0A 00 00 31 32 2E 30 39 2E + 31 39 38 34 1A 00 00 53 65 6E 69 6F 72 20 4D 61 + 6E 61 67 65 72 20 45 6E 67 69 6E 65 65 72 69 6E + 67 0A 00 00 30 39 2E 30 38 2E 31 39 36 30 03 00 + 00 54 48 42 0A 00 00 32 34 2E 30 32 2E 31 39 35 + 34 0A 00 00 30 31 2E 30 36 2E 31 39 39 38 0A 00 + 00 30 38 2E 30 33 2E 31 39 36 39 0A 00 00 31 34 + 2E 30 34 2E 31 39 39 37 0A 00 00 32 31 2E 30 38 + 2E 31 39 36 37 0A 00 00 30 37 2E 30 37 2E 31 39 + 39 37 0A 00 00 33 30 2E 31 31 2E 31 39 36 30 0A + 00 00 30 32 2E 30 35 2E 31 39 39 37 0A 00 00 32 + 39 2E 30 37 2E 31 39 35 35 0A 00 00 30 33 2E 30 + 33 2E 31 39 39 37 0A 00 00 32 35 2E 30 35 2E 31 + 39 35 37 0A 00 00 30 31 2E 30 39 2E 31 39 39 36 + 0A 00 00 31 38 2E 30 31 2E 31 39 34 32 0A 00 00 + 30 31 2E 30 33 2E 31 39 39 39 0A 00 00 32 32 2E + 30 36 2E 31 39 36 38 0A 00 00 30 31 2E 31 32 2E + 31 39 39 38 0A 00 00 30 33 2E 30 35 2E 31 39 36 + 39 0A 00 00 30 31 2E 30 35 2E 31 39 39 38 0A 00 + 00 32 32 2E 30 38 2E 31 39 35 37 0A 00 00 31 35 + 2E 30 37 2E 31 39 38 35 0A 00 00 32 32 2E 30 35 + 2E 31 39 36 36 0A 00 00 30 38 2E 30 32 2E 31 39 + 39 36 0A 00 00 32 31 2E 31 32 2E 31 39 37 37 0A + 00 00 30 33 2E 30 34 2E 31 39 35 36 0A 00 00 31 + 32 2E 30 31 2E 31 39 39 36 0A 00 00 30 38 2E 30 + 37 2E 31 39 36 30 0A 00 00 30 31 2E 30 34 2E 31 + 39 39 39 0A 00 00 30 36 2E 30 31 2E 31 39 36 33 + 0A 00 00 30 31 2E 31 30 2E 31 39 39 38 0A 00 00 + 30 34 2E 30 35 2E 31 39 35 35 0A 00 00 32 33 2E + 30 39 2E 31 39 39 36 0A 00 00 32 33 2E 30 39 2E + 31 39 37 30 0A 00 00 30 39 2E 30 33 2E 31 39 36 + 37 0A 00 00 30 36 2E 30 39 2E 32 30 30 30 0A 00 + 00 31 33 2E 30 39 2E 31 39 35 32 0A 00 00 31 37 + 2E 30 31 2E 32 30 30 30 0A 00 00 31 31 2E 30 39 + 2E 31 39 36 31 0A 00 00 30 33 2E 31 31 2E 31 39 + 39 39 0A 00 00 31 39 2E 30 32 2E 31 39 36 32 0A + 00 00 30 31 2E 30 31 2E 31 39 39 36 0A 00 00 32 + 33 2E 30 37 2E 31 39 36 30 0A 00 00 32 31 2E 30 + 32 2E 32 30 30 30 0A 00 00 31 32 2E 31 31 2E 31 + 39 36 39 0A 00 00 32 34 2E 30 35 2E 31 39 39 39 + 0A 00 00 30 38 2E 31 32 2E 31 39 36 31 0A 00 00 + 30 31 2E 30 34 2E 31 39 39 37 0A 00 00 30 34 2E + 30 34 2E 31 39 36 34 12 00 00 53 65 6E 69 6F 72 + 20 55 6E 64 65 72 77 72 69 74 65 72 0A 00 00 32 + 33 2E 30 32 2E 31 39 36 35 0A 00 00 31 38 2E 30 + 39 2E 31 39 36 39 0A 00 00 30 31 2E 30 34 2E 31 + 39 39 38 0A 00 00 31 31 2E 30 33 2E 31 39 35 32 + 0A 00 00 31 37 2E 31 30 2E 31 39 37 34 0A 00 00 + 30 33 2E 30 37 2E 31 39 39 35 0A 00 00 30 32 2E + 30 34 2E 31 39 36 38 0A 00 00 31 34 2E 30 32 2E + 32 30 30 30 0A 00 00 31 34 2E 30 33 2E 31 39 36 + 31 0A 00 00 31 37 2E 30 36 2E 31 39 39 36 0A 00 + 00 33 31 2E 30 38 2E 31 39 36 35 0A 00 00 31 37 + 2E 30 32 2E 31 39 39 37 0A 00 00 30 35 2E 30 37 + 2E 31 39 36 36 0A 00 00 32 30 2E 30 33 2E 32 30 + 30 30 16 00 00 41 64 6D 69 6E 69 73 74 72 61 74 + 69 76 65 20 4F 66 66 69 63 65 72 0A 00 00 31 33 + 2E 30 36 2E 31 39 37 32 0A 00 00 33 31 2E 30 35 + 2E 32 30 30 30 0A 00 00 32 31 2E 30 33 2E 31 39 + 37 39 0A 00 00 30 32 2E 30 35 2E 32 30 30 30 0A + 00 00 32 33 2E 31 31 2E 31 39 36 38 0A 00 00 31 + 34 2E 30 32 2E 31 39 37 30 0A 00 00 31 30 2E 30 + 38 2E 31 39 39 38 0A 00 00 30 36 2E 30 39 2E 31 + 39 36 32 0A 00 00 30 33 2E 31 31 2E 31 39 39 37 + 0A 00 00 31 34 2E 30 36 2E 31 39 36 37 0A 00 00 + 31 36 2E 30 36 2E 31 39 39 37 0A 00 00 30 37 2E + 30 33 2E 31 39 36 35 0A 00 00 30 38 2E 30 35 2E + 31 39 39 36 0A 00 00 31 36 2E 30 33 2E 31 39 36 + 34 0A 00 00 32 39 2E 30 35 2E 32 30 30 30 0A 00 + 00 31 39 2E 30 38 2E 31 39 37 32 0A 00 00 32 37 + 2E 30 35 2E 31 39 37 30 0A 00 00 31 35 2E 31 31 + 2E 31 39 39 36 0A 00 00 31 36 2E 30 32 2E 31 39 + 37 31 0A 00 00 31 37 2E 31 30 2E 31 39 36 37 0A + 00 00 32 35 2E 30 38 2E 32 30 30 30 0A 00 00 32 + 33 2E 30 36 2E 31 39 36 36 0A 00 00 31 33 2E 30 + 38 2E 31 39 35 35 0A 00 00 32 30 2E 31 31 2E 31 + 39 36 32 0A 00 00 31 35 2E 30 35 2E 31 39 38 39 + 0A 00 00 32 35 2E 31 31 2E 31 39 36 39 0A 00 00 + 30 32 2E 30 31 2E 31 39 39 37 0A 00 00 31 33 2E + 31 31 2E 31 39 34 36 0A 00 00 30 31 2E 30 31 2E + 31 39 37 37 0F 00 00 52 65 6B 72 2E 2F 42 65 74 + 72 65 75 75 6E 67 0A 00 00 32 35 2E 30 32 2E 31 + 39 36 31 0A 00 00 30 31 2E 30 35 2E 31 39 39 33 + 0A 00 00 31 38 2E 31 31 2E 31 39 37 35 0A 00 00 + 33 30 2E 30 39 2E 31 39 37 32 0A 00 00 31 38 2E + 31 32 2E 31 39 39 37 0A 00 00 33 31 2E 30 38 2E + 31 39 35 38 17 00 00 45 6E 67 69 6E 65 65 72 69 + 6E 67 20 43 6F 6F 72 64 69 6E 61 74 6F 72 0A 00 + 00 31 31 2E 30 34 2E 31 39 36 30 0A 00 00 30 31 + 2E 30 31 2E 31 39 39 37 0A 00 00 30 37 2E 30 35 + 2E 31 39 38 30 0A 00 00 31 39 2E 30 36 2E 32 30 + 30 30 0A 00 00 33 30 2E 30 35 2E 31 39 36 38 0A + 00 00 30 37 2E 30 36 2E 31 39 36 36 0A 00 00 30 + 31 2E 31 31 2E 31 39 39 39 0A 00 00 32 36 2E 30 + 33 2E 31 39 36 34 0A 00 00 31 34 2E 30 38 2E 32 + 30 30 30 0A 00 00 32 37 2E 30 33 2E 31 39 35 39 + 0A 00 00 31 30 2E 30 35 2E 31 39 37 33 03 00 00 + 49 4E 52 0A 00 00 30 37 2E 30 33 2E 31 39 36 37 + 0A 00 00 30 34 2E 30 38 2E 31 39 37 36 0A 00 00 + 32 37 2E 31 32 2E 31 39 36 30 0A 00 00 30 31 2E + 31 30 2E 31 39 39 35 0A 00 00 31 31 2E 30 31 2E + 31 39 34 38 0A 00 00 30 32 2E 30 34 2E 31 39 39 + 37 0A 00 00 33 30 2E 30 37 2E 31 39 37 35 0A 00 + 00 31 39 2E 31 32 2E 31 39 36 39 0A 00 00 30 31 + 2E 30 33 2E 32 30 30 30 0A 00 00 30 33 2E 30 33 + 2E 31 39 36 38 0A 00 00 30 32 2E 30 37 2E 31 39 + 37 34 02 00 00 53 57 04 00 00 33 31 35 38 04 00 + 00 33 31 39 32 10 00 00 55 57 20 4D 61 6E 61 67 + 65 72 20 53 57 49 46 54 04 00 00 33 32 32 30 02 + 00 00 53 32 04 00 00 33 32 34 31 04 00 00 33 32 + 34 32 04 00 00 33 32 37 33 13 00 00 54 72 65 61 + 74 79 20 55 57 20 53 75 70 70 2E 20 50 2F 43 04 + 00 00 33 32 38 34 04 00 00 33 32 38 38 0F 00 00 + 54 65 61 6D 20 4C 65 61 64 65 72 20 53 53 43 04 + 00 00 33 33 30 35 16 00 00 55 57 20 46 69 6E 61 + 6E 63 69 61 6C 20 53 6F 6C 75 74 69 6F 6E 73 04 + 00 00 33 33 35 36 04 00 00 33 33 35 39 0C 00 00 + 48 65 61 64 20 53 49 43 53 2F 6E 74 02 00 00 43 + 32 04 00 00 33 33 36 38 13 00 00 55 6E 64 65 72 + 77 72 69 74 65 72 20 46 61 6B 20 48 55 4B 02 00 + 00 44 4E 04 00 00 33 33 37 37 13 00 00 44 65 61 + 6C 20 4B 6F 6F 72 64 69 6E 61 74 6F 72 2F 55 57 + 04 00 00 33 33 38 30 12 00 00 55 6E 64 65 72 77 + 72 69 74 65 72 20 44 45 53 49 47 4E 04 00 00 33 + 33 38 39 14 00 00 4B 6E 6F 77 6C 65 64 67 65 20 + 45 78 70 65 72 74 20 53 53 43 04 00 00 33 34 30 + 35 04 00 00 33 34 31 33 04 00 00 33 34 31 35 04 + 00 00 33 34 32 33 02 00 00 45 57 04 00 00 33 34 + 34 33 16 00 00 45 6E 67 69 6E 65 65 72 69 6E 67 + 20 55 57 20 53 75 70 70 6F 72 74 04 00 00 33 34 + 35 34 04 00 00 33 34 36 31 02 00 00 45 42 04 00 + 00 33 34 38 30 04 00 00 33 35 30 38 10 00 00 53 + 65 63 74 69 6F 6E 20 48 65 61 64 20 53 53 43 04 + 00 00 33 35 32 39 04 00 00 33 35 34 37 16 00 00 + 42 75 73 69 6E 65 73 73 20 41 73 73 69 73 74 61 + 6E 74 20 53 53 43 04 00 00 33 35 35 34 04 00 00 + 33 35 36 36 02 00 00 50 34 04 00 00 33 36 31 36 + 10 00 00 55 57 20 46 61 63 2E 20 50 72 6F 70 65 + 72 74 79 04 00 00 33 36 34 31 04 00 00 33 36 35 + 34 04 00 00 33 36 39 35 04 00 00 33 37 38 36 18 + 00 00 55 57 20 4D 61 6E 61 67 65 72 20 46 61 63 + 2E 20 50 72 6F 70 65 72 74 79 04 00 00 33 38 31 + 39 04 00 00 33 38 33 33 18 00 00 55 57 20 53 75 + 70 70 6F 72 74 20 46 61 63 2E 20 43 61 73 75 61 + 6C 74 79 02 00 00 45 43 04 00 00 33 38 36 30 04 + 00 00 33 38 37 34 02 00 00 50 36 04 00 00 33 39 + 35 36 10 00 00 55 6E 64 65 72 77 72 69 74 65 72 + 20 53 61 63 68 04 00 00 33 39 38 38 16 00 00 41 + 64 6D 69 6E 69 73 74 72 61 74 69 6F 6E 20 46 61 + 6B 20 48 55 4B 04 00 00 33 39 39 36 02 00 00 4E + 45 04 00 00 34 30 32 39 12 00 00 4E 75 63 6C 65 + 61 72 20 55 57 20 53 75 70 70 6F 72 74 04 00 00 + 34 30 34 36 04 00 00 34 30 38 34 04 00 00 34 30 + 38 39 04 00 00 34 30 39 32 04 00 00 34 30 39 37 + 04 00 00 34 31 33 36 04 00 00 34 31 37 32 04 00 + 00 34 32 33 30 04 00 00 34 32 35 31 04 00 00 34 + 32 39 30 0A 00 00 55 57 20 53 75 70 70 6F 72 74 + 04 00 00 34 33 38 35 15 00 00 4D 61 6E 61 67 65 + 72 20 41 63 74 2E 20 53 65 72 76 69 63 65 73 04 + 00 00 34 34 30 33 04 00 00 34 34 31 34 04 00 00 + 34 34 33 38 04 00 00 34 34 34 33 04 00 00 34 34 + 37 32 04 00 00 34 34 37 34 04 00 00 34 35 31 31 + 04 00 00 34 35 33 32 04 00 00 34 35 34 36 02 00 + 00 54 50 04 00 00 34 35 37 34 04 00 00 34 35 38 + 30 04 00 00 34 36 30 39 04 00 00 34 36 33 32 04 + 00 00 34 36 33 35 0E 00 00 53 49 43 53 6E 74 20 + 50 72 6F 6A 65 6B 74 04 00 00 34 39 34 33 02 00 + 00 45 48 04 00 00 34 39 35 37 04 00 00 34 39 35 + 39 04 00 00 35 30 31 30 04 00 00 35 30 32 30 04 + 00 00 35 30 32 32 04 00 00 35 30 36 31 04 00 00 + 35 30 38 33 04 00 00 35 31 31 35 04 00 00 35 31 + 33 35 04 00 00 35 31 38 32 04 00 00 35 31 38 34 + 0E 00 00 48 52 20 43 6F 6E 74 72 6F 6C 6C 69 6E + 67 04 00 00 35 31 39 35 04 00 00 35 32 32 33 04 + 00 00 35 32 36 30 15 00 00 47 6C 6F 62 61 6C 20 + 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 72 04 00 + 00 35 32 36 34 04 00 00 35 32 37 30 04 00 00 35 + 32 39 34 04 00 00 35 33 30 37 19 00 00 43 6C 69 + 65 6E 74 20 4D 61 6E 61 67 65 6D 65 6E 74 20 53 + 75 70 70 6F 72 74 04 00 00 35 33 31 32 02 00 00 + 4D 4C 04 00 00 35 33 31 38 0F 00 00 45 76 65 6E + 74 20 4D 61 72 6B 65 74 69 6E 67 04 00 00 35 33 + 32 32 14 00 00 55 6E 64 65 72 77 72 69 74 65 72 + 20 46 61 6B 20 53 61 63 68 04 00 00 35 33 32 37 + 04 00 00 35 33 33 33 04 00 00 35 33 35 37 04 00 + 00 35 33 35 38 04 00 00 35 34 32 35 18 00 00 4D + 67 72 20 42 55 53 20 50 65 72 66 6F 72 6D 61 6E + 63 65 20 54 65 61 6D 04 00 00 35 35 30 34 04 00 + 00 35 35 38 34 10 00 00 41 73 73 69 73 74 61 6E + 74 20 44 4F 4F 20 45 55 04 00 00 35 35 39 37 04 + 00 00 35 36 30 35 04 00 00 35 36 30 38 04 00 00 + 35 36 31 37 04 00 00 35 36 32 33 04 00 00 35 36 + 38 31 0F 00 00 48 65 61 64 20 50 43 20 53 75 70 + 70 6F 72 74 04 00 00 35 37 30 31 04 00 00 35 37 + 30 34 04 00 00 35 37 32 31 14 00 00 52 65 6C 61 + 74 69 6F 6E 20 4D 61 6E 61 67 65 72 20 53 53 43 + 04 00 00 35 37 33 36 04 00 00 35 37 34 38 04 00 + 00 35 37 35 34 04 00 00 35 37 35 35 17 00 00 50 + 72 6F 6A 65 63 74 20 4D 62 72 20 73 77 69 66 74 + 72 65 2E 63 6F 6D 04 00 00 35 37 35 36 04 00 00 + 35 37 36 32 0F 00 00 44 65 70 75 74 79 20 48 65 + 61 64 20 53 53 43 04 00 00 35 37 38 30 04 00 00 + 35 37 38 34 04 00 00 35 37 38 36 04 00 00 35 38 + 31 35 04 00 00 35 38 32 31 04 00 00 35 38 34 30 + 04 00 00 35 39 32 31 04 00 00 35 39 33 30 04 00 + 00 35 39 33 32 12 00 00 4E 75 63 6C 65 61 72 20 + 55 57 20 4D 61 6E 61 67 65 72 04 00 00 35 39 34 + 36 04 00 00 35 39 34 39 04 00 00 35 39 35 34 04 + 00 00 35 39 35 39 04 00 00 35 39 36 32 04 00 00 + 35 39 38 34 04 00 00 36 30 37 34 04 00 00 36 31 + 31 30 04 00 00 36 31 31 33 04 00 00 36 31 32 36 + 04 00 00 36 31 38 31 17 00 00 50 72 6F 6A 65 63 + 74 20 4D 67 72 20 73 77 69 66 74 72 65 2E 63 6F + 6D 04 00 00 36 31 38 37 04 00 00 36 32 31 39 19 + 00 00 48 65 61 64 20 6F 66 20 44 69 76 2E 20 45 + 78 65 63 2E 20 4F 66 66 69 63 65 04 00 00 36 33 + 30 31 04 00 00 36 33 35 38 04 00 00 36 34 34 31 + 04 00 00 36 34 35 39 04 00 00 36 35 31 34 04 00 + 00 36 35 32 37 04 00 00 36 35 33 30 13 00 00 4D + 61 72 69 6E 65 20 55 6E 64 65 72 77 72 69 74 69 + 6E 67 04 00 00 36 35 33 38 04 00 00 36 36 34 35 + 04 00 00 36 36 35 38 04 00 00 36 36 36 35 04 00 + 00 36 36 39 39 04 00 00 36 37 33 37 15 00 00 41 + 70 70 6C 69 63 61 74 69 6F 6E 20 53 75 70 70 6F + 72 74 65 72 04 00 00 36 37 34 30 04 00 00 36 37 + 34 39 04 00 00 36 37 35 30 0B 00 00 54 72 61 69 + 6E 65 72 20 53 53 43 04 00 00 36 37 39 30 04 00 + 00 36 38 30 35 04 00 00 36 38 31 38 19 00 00 48 + 65 61 64 20 49 6E 64 69 76 69 64 75 61 6C 20 52 + 65 70 6F 72 74 69 6E 67 04 00 00 36 38 36 39 04 + 00 00 36 38 37 31 04 00 00 36 38 38 32 04 00 00 + 36 38 38 33 04 00 00 36 38 38 35 04 00 00 36 39 + 34 34 04 00 00 36 39 34 36 04 00 00 36 39 35 30 + 04 00 00 37 30 31 30 04 00 00 37 30 32 32 04 00 + 00 37 30 32 35 04 00 00 37 30 32 36 04 00 00 37 + 30 37 38 04 00 00 37 30 38 37 04 00 00 37 31 30 + 36 04 00 00 37 31 31 38 04 00 00 37 31 31 39 12 + 00 00 41 63 74 75 61 72 69 61 6C 20 53 65 72 76 + 69 63 65 73 04 00 00 37 31 33 36 04 00 00 37 31 + 36 32 04 00 00 37 31 37 39 04 00 00 37 32 36 39 + 04 00 00 37 33 34 38 04 00 00 37 34 30 39 04 00 + 00 37 34 31 38 04 00 00 37 34 31 39 15 00 00 4D + 67 72 20 49 54 20 49 6E 66 72 61 73 74 72 75 63 + 74 75 72 65 04 00 00 37 34 37 37 04 00 00 37 35 + 30 31 04 00 00 37 35 37 35 04 00 00 37 35 37 36 + 04 00 00 37 35 39 35 04 00 00 37 36 30 32 04 00 + 00 37 36 30 36 04 00 00 37 39 34 32 04 00 00 37 + 39 37 32 04 00 00 37 39 39 31 04 00 00 38 30 30 + 39 04 00 00 38 30 32 30 04 00 00 38 30 32 39 04 + 00 00 38 30 33 34 04 00 00 38 30 33 37 14 00 00 + 52 65 70 6F 72 74 69 6E 67 20 53 70 65 63 69 61 + 6C 69 73 74 04 00 00 38 30 35 36 14 00 00 53 65 + 6B 72 65 74 61 72 69 61 74 20 4F 70 65 72 2E 20 + 45 55 04 00 00 38 30 36 37 04 00 00 38 30 38 31 + 04 00 00 38 31 31 31 04 00 00 38 31 33 36 15 00 + 00 41 73 73 69 73 74 61 6E 74 20 74 6F 20 48 65 + 61 64 20 53 53 43 04 00 00 38 32 31 39 04 00 00 + 38 32 39 38 04 00 00 38 33 31 39 04 00 00 38 33 + 34 32 04 00 00 38 33 36 33 04 00 00 38 34 30 33 + 04 00 00 38 34 30 34 04 00 00 38 34 30 36 04 00 + 00 38 34 31 32 04 00 00 38 34 31 33 04 00 00 38 + 34 31 34 04 00 00 38 34 31 35 11 00 00 53 65 6E + 69 6F 72 20 55 57 20 46 61 6B 20 48 55 4B 04 00 + 00 38 34 32 39 04 00 00 38 34 33 31 04 00 00 38 + 34 33 33 04 00 00 38 34 33 37 04 00 00 38 34 34 + 30 04 00 00 38 34 35 31 04 00 00 38 34 35 35 04 + 00 00 38 34 36 36 04 00 00 38 34 36 37 04 00 00 + 38 34 36 38 04 00 00 38 34 37 34 04 00 00 38 34 + 38 30 04 00 00 38 34 38 38 04 00 00 38 34 38 39 + 04 00 00 38 34 39 36 12 00 00 50 72 6F 6A 65 6B + 74 20 53 70 65 7A 69 61 6C 69 73 74 04 00 00 38 + 35 30 34 04 00 00 38 35 30 37 04 00 00 38 35 30 + 38 04 00 00 38 35 31 35 04 00 00 38 35 31 39 04 + 00 00 38 35 32 30 04 00 00 38 35 32 33 04 00 00 + 38 35 33 39 04 00 00 38 35 35 33 04 00 00 38 35 + 36 30 04 00 00 38 35 36 34 04 00 00 38 35 36 35 + 18 00 00 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 + 6D 65 6E 74 20 4D 65 6D 62 65 72 04 00 00 38 35 + 36 36 04 00 00 38 35 36 37 04 00 00 38 35 36 38 + 04 00 00 38 35 37 32 04 00 00 38 35 37 34 04 00 + 00 38 35 38 30 04 00 00 38 35 38 31 04 00 00 38 + 35 38 34 04 00 00 38 35 38 35 04 00 00 38 35 39 + 36 04 00 00 38 36 30 30 04 00 00 38 36 32 34 04 + 00 00 38 36 32 38 04 00 00 38 36 33 39 16 00 00 + 55 57 20 4D 61 6E 61 67 65 72 20 73 77 69 66 74 + 72 65 2E 63 6F 6D 04 00 00 38 36 34 33 04 00 00 + 38 36 35 37 19 00 00 48 65 61 64 20 6F 66 20 50 + 6C 61 6E 2E 26 43 6F 6E 74 72 6F 6C 6C 69 6E 67 + 04 00 00 38 37 31 33 10 00 00 55 57 20 46 61 63 + 2E 20 43 61 73 75 61 6C 74 79 04 00 00 38 37 33 + 39 04 00 00 38 37 34 35 04 00 00 38 37 35 30 19 + 00 00 55 57 20 4D 61 6E 61 67 65 72 20 46 69 6E + 61 6E 63 69 61 6C 20 53 6F 6C 2E 04 00 00 38 37 + 35 33 04 00 00 38 37 36 33 04 00 00 38 38 30 30 + 19 00 00 49 54 20 4D 67 72 20 42 75 73 2E 20 45 + 78 65 63 2E 20 53 79 73 74 65 6D 73 04 00 00 38 + 38 39 38 04 00 00 38 39 32 30 04 00 00 39 31 31 + 36 04 00 00 39 31 32 30 04 00 00 39 31 32 36 04 + 00 00 39 31 35 37 04 00 00 39 31 35 38 04 00 00 + 39 31 37 39 04 00 00 39 33 30 37 04 00 00 39 33 + 32 37 04 00 00 39 33 39 39 04 00 00 39 34 39 35 + 04 00 00 39 34 39 37 04 00 00 39 35 33 33 04 00 + 00 39 36 31 33 04 00 00 39 36 35 31 04 00 00 39 + 37 35 31 05 00 00 31 30 30 35 37 05 00 00 31 30 + 32 31 34 05 00 00 31 30 32 32 36 05 00 00 31 30 + 32 32 38 05 00 00 31 30 32 33 32 05 00 00 31 30 + 32 33 38 05 00 00 31 30 32 34 34 05 00 00 31 30 + 32 34 38 05 00 00 31 30 32 35 30 05 00 00 31 30 + 32 38 34 05 00 00 31 30 33 37 38 05 00 00 31 30 + 34 31 31 05 00 00 31 30 34 35 33 05 00 00 31 30 + 34 38 31 05 00 00 31 30 35 33 33 05 00 00 31 30 + 35 36 37 16 00 00 48 65 61 64 20 49 6E 74 65 72 + 6E 61 74 2E 20 53 75 70 70 6F 72 74 05 00 00 31 + 30 35 38 34 19 00 00 49 54 20 48 65 61 64 20 5A + 48 20 26 20 4C 6F 63 2E 20 4F 66 66 69 63 65 73 + 05 00 00 31 30 36 30 30 05 00 00 31 30 36 30 37 + 05 00 00 31 30 36 30 38 05 00 00 31 30 36 30 39 + 05 00 00 31 30 36 31 30 05 00 00 31 30 36 31 36 + 05 00 00 31 30 36 32 34 05 00 00 31 30 37 30 31 + 05 00 00 31 30 37 33 34 05 00 00 31 30 37 33 35 + 02 00 00 41 47 05 00 00 31 30 37 34 38 05 00 00 + 31 30 38 36 30 16 00 00 49 54 20 4D 61 6E 61 67 + 65 72 20 73 77 69 66 74 72 65 2E 63 6F 6D 05 00 + 00 31 30 38 39 38 05 00 00 31 30 39 38 39 05 00 + 00 31 30 39 39 31 05 00 00 31 31 31 30 36 0F 00 + 00 43 6F 73 74 20 43 6F 6E 74 72 6F 6C 6C 65 72 + 05 00 00 31 31 31 33 37 05 00 00 31 31 31 34 31 + 19 00 00 53 61 63 68 62 65 61 72 62 2E 44 69 76 + 2E 45 78 65 63 2E 4F 66 66 69 63 65 05 00 00 31 + 31 31 35 34 05 00 00 31 31 32 33 34 05 00 00 31 + 31 32 33 37 05 00 00 31 31 32 37 35 05 00 00 31 + 31 32 37 36 05 00 00 31 31 33 30 39 05 00 00 31 + 31 33 37 33 05 00 00 31 31 33 39 36 05 00 00 31 + 31 35 32 33 05 00 00 31 31 36 37 34 05 00 00 31 + 31 36 39 39 05 00 00 31 31 37 32 33 05 00 00 31 + 31 37 33 33 05 00 00 31 31 37 34 38 05 00 00 31 + 31 37 37 36 05 00 00 31 31 37 38 32 05 00 00 31 + 31 38 31 38 05 00 00 31 31 38 32 37 05 00 00 31 + 31 38 33 35 05 00 00 31 31 38 38 32 05 00 00 31 + 31 39 33 35 05 00 00 31 31 39 33 36 05 00 00 31 + 31 39 34 39 05 00 00 31 32 30 30 38 05 00 00 31 + 32 30 32 34 05 00 00 31 32 30 38 34 05 00 00 31 + 32 31 33 34 05 00 00 31 32 31 35 36 05 00 00 31 + 32 31 38 35 05 00 00 31 32 32 31 31 05 00 00 31 + 32 32 38 37 05 00 00 31 32 33 31 39 05 00 00 31 + 32 33 36 34 05 00 00 31 32 33 39 30 05 00 00 31 + 32 34 34 39 02 00 00 50 4D 05 00 00 31 32 34 35 + 37 0F 00 00 48 65 61 64 20 50 4D 4F 20 45 75 72 + 6F 70 65 01 00 00 34 02 00 00 32 34 02 00 00 32 + 37 02 00 00 34 31 01 00 00 41 02 00 00 35 31 02 + 00 00 36 30 02 00 00 36 35 02 00 00 37 31 02 00 + 00 38 30 02 00 00 38 38 02 00 00 39 39 19 00 00 + 43 6C 69 65 6E 74 20 4D 67 72 20 47 6C 6F 62 61 + 6C 20 43 6C 69 65 6E 74 73 03 00 00 31 31 38 03 + 00 00 31 32 39 03 00 00 31 33 32 16 00 00 43 6C + 61 69 6D 73 20 4D 67 72 20 73 77 69 66 74 72 65 + 2E 63 6F 6D 03 00 00 31 37 30 03 00 00 31 37 33 + 11 00 00 4D 61 6E 61 67 65 72 20 4D 61 72 69 6E + 65 20 55 57 03 00 00 31 38 39 11 00 00 55 57 20 + 4D 61 6E 61 67 65 72 20 44 45 53 49 47 4E 03 00 + 00 36 37 38 15 00 00 55 6E 64 65 72 77 72 69 74 + 65 72 20 44 E9 63 65 6E 6E 61 6C 65 03 00 00 38 + 39 32 03 00 00 39 32 38 03 00 00 39 33 38 03 00 + 00 39 37 33 03 00 00 39 37 39 04 00 00 31 30 33 + 30 04 00 00 31 30 37 30 0F 00 00 53 6F 52 69 20 + 55 57 20 4D 61 6E 61 67 65 72 04 00 00 31 31 31 + 38 04 00 00 31 34 37 35 04 00 00 31 35 30 31 04 + 00 00 31 35 32 31 04 00 00 31 35 35 38 04 00 00 + 31 35 39 32 04 00 00 31 36 30 30 04 00 00 31 36 + 31 30 04 00 00 31 36 32 39 04 00 00 31 36 35 35 + 04 00 00 31 37 30 30 16 00 00 48 65 61 64 20 6F + 66 20 44 69 76 2E 20 48 52 20 5A FC 72 69 63 68 + 04 00 00 31 37 31 39 04 00 00 31 37 36 34 04 00 + 00 31 37 37 34 04 00 00 31 38 30 34 04 00 00 31 + 38 36 36 04 00 00 31 39 30 31 04 00 00 31 39 33 + 37 04 00 00 32 30 30 35 04 00 00 32 30 34 38 04 + 00 00 32 30 37 34 04 00 00 32 31 30 32 04 00 00 + 32 31 33 37 04 00 00 32 31 36 37 04 00 00 32 31 + 38 31 04 00 00 32 32 31 30 04 00 00 32 32 34 34 + 04 00 00 32 32 37 32 04 00 00 32 32 38 30 04 00 + 00 32 33 31 32 04 00 00 32 33 32 36 17 00 00 44 + 69 76 2E 20 4F 70 65 72 61 74 2E 20 4F 66 66 69 + 63 65 72 20 45 55 04 00 00 32 33 36 34 04 00 00 + 32 33 39 30 04 00 00 32 34 31 30 04 00 00 32 34 + 32 38 04 00 00 32 34 33 31 04 00 00 32 34 35 35 + 12 00 00 48 65 61 64 20 6F 66 20 53 53 43 20 5A + 75 72 69 63 68 04 00 00 32 36 30 33 04 00 00 32 + 36 32 35 04 00 00 32 36 37 32 04 00 00 32 36 39 + 37 04 00 00 32 37 33 33 18 00 00 49 6E 6E 6F 76 + 61 74 69 6F 6E 2F 4B 6E 6F 77 6C 65 64 67 65 20 + 4D 67 72 04 00 00 32 37 33 39 04 00 00 32 37 38 + 36 04 00 00 32 38 30 38 0B 00 00 53 74 61 62 73 + 6C 65 69 74 65 72 04 00 00 32 38 31 31 17 00 00 + 48 65 61 64 20 6F 66 20 4D 61 72 6B 65 74 69 6E + 67 20 53 20 26 20 4C 04 00 00 32 38 31 36 17 00 + 00 49 54 20 4D 67 72 20 52 65 69 6E 73 75 72 2E + 20 53 79 73 74 65 6D 73 04 00 00 32 38 32 30 04 + 00 00 32 38 37 33 05 00 00 31 32 35 30 34 05 00 + 00 31 32 35 33 34 05 00 00 31 32 35 34 33 05 00 + 00 31 32 35 36 36 05 00 00 31 32 35 39 38 05 00 + 00 31 32 36 31 31 05 00 00 31 32 36 33 35 05 00 + 00 31 32 36 35 38 05 00 00 31 32 36 36 36 01 00 + 00 4E 05 00 00 31 32 36 37 36 05 00 00 31 32 37 + 33 36 05 00 00 31 32 37 36 38 05 00 00 31 32 38 + 30 35 05 00 00 31 32 38 32 34 05 00 00 31 32 38 + 35 30 05 00 00 31 32 39 33 31 05 00 00 31 33 30 + 30 32 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7 new file mode 100755 index 0000000000..571474ebdc --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7 @@ -0,0 +1,105 @@ + 3C 00 86 06 05 00 00 31 33 30 37 30 05 00 + 00 31 32 35 36 37 0F 00 00 4B 56 2D 50 72 61 6B + 74 69 6B 61 6E 74 69 6E 02 00 00 33 32 04 00 00 + 35 38 37 32 04 00 00 38 34 39 35 05 00 00 31 30 + 34 39 39 05 00 00 31 30 35 30 31 05 00 00 31 30 + 35 30 33 05 00 00 31 30 35 30 35 05 00 00 31 30 + 36 38 39 05 00 00 31 30 36 39 31 05 00 00 31 30 + 37 35 32 05 00 00 31 30 38 35 33 05 00 00 31 30 + 38 35 34 05 00 00 31 30 38 35 36 05 00 00 31 30 + 38 35 37 05 00 00 31 30 38 38 30 16 00 00 50 72 + 6F 6A 65 63 74 20 4F 66 66 69 63 65 20 4D 61 6E + 61 67 65 72 13 00 00 43 68 69 65 66 20 4C 65 67 + 61 6C 20 4F 66 66 69 63 65 72 18 00 00 53 65 63 + 74 6F 72 20 53 74 72 61 74 65 67 69 73 74 20 45 + 75 72 6F 70 65 12 00 00 48 65 61 64 20 6F 66 20 + 41 75 74 6F 6D 61 74 69 6F 6E 17 00 00 48 65 61 + 64 20 46 75 6E 64 20 6F 66 20 46 75 6E 64 73 20 + 55 6E 69 74 0C 00 00 43 4D 20 41 73 73 69 73 74 + 61 6E 74 18 00 00 48 65 61 64 20 48 75 6D 61 6E + 20 52 65 73 6F 75 72 63 65 73 20 53 52 49 14 00 + 00 51 75 61 6E 74 69 74 61 74 69 76 65 20 41 6E + 61 6C 79 73 74 12 00 00 55 6D 77 65 6C 74 62 65 + 61 75 66 74 72 61 67 74 65 72 12 00 00 54 68 69 + 72 64 20 79 65 61 72 20 41 6E 61 6C 79 73 74 17 + 00 00 48 65 61 64 20 43 75 73 74 6F 64 79 20 4D + 61 6E 61 67 65 6D 65 6E 74 0E 00 00 56 69 63 65 + 20 50 72 65 73 69 64 65 6E 74 11 00 00 50 72 6F + 6A 65 6B 74 6C 65 69 74 65 72 20 52 53 41 0D 00 + 00 50 72 6F 67 72 61 6D 6D 69 65 72 65 72 19 00 + 00 44 65 70 2E 48 65 61 64 20 46 69 6E 61 6E 63 + 2E 20 41 63 63 6F 75 6E 74 2E 19 00 00 53 65 6E + 69 6F 72 20 49 6E 66 6F 72 6D 2E 20 53 70 65 63 + 69 61 6C 69 73 74 14 00 00 48 65 61 64 20 43 6C + 69 65 6E 74 20 52 65 6C 61 74 69 6F 6E 0A 00 00 + 43 6F 6E 73 75 6C 74 61 6E 74 15 00 00 48 65 61 + 64 20 42 75 73 69 6E 65 73 73 20 41 6E 61 6C 79 + 73 74 18 00 00 48 65 61 64 20 43 6C 69 65 6E 74 + 20 4D 67 6D 74 20 53 79 73 74 65 6D 73 15 00 00 + 48 65 61 64 20 4B 6E 6F 77 6C 2E 26 49 6E 66 2E + 20 4D 67 6D 74 19 00 00 4C 65 69 74 65 72 20 42 + 75 63 68 68 2F 42 65 72 69 63 68 74 65 72 73 74 + 2E 19 00 00 50 72 6F 6A 2E 4D 67 72 2E 20 43 65 + 6E 74 72 65 20 6F 66 20 43 6F 6D 70 2E 19 00 00 + 41 73 73 2E 20 47 72 70 2E 20 43 6F 6D 70 6C 69 + 61 6E 63 65 20 4F 66 66 2E 10 00 00 48 65 61 64 + 20 6F 66 20 52 65 73 65 61 72 63 68 12 00 00 53 + 6F 66 74 77 61 72 65 20 41 72 63 68 69 74 65 63 + 74 13 00 00 48 65 61 64 20 6F 66 20 49 54 20 54 + 72 61 69 6E 69 6E 67 19 00 00 4F 70 65 72 61 74 + 69 76 65 72 20 42 65 74 72 69 65 62 73 6C 65 69 + 74 65 72 12 00 00 41 64 6D 69 6E 2E 20 4D 69 74 + 61 72 62 65 69 74 65 72 02 00 00 47 57 16 00 00 + 54 65 61 6D 6C 2E 20 43 6F 73 74 20 41 63 63 6F + 75 6E 74 69 6E 67 18 00 00 48 65 61 64 20 52 65 + 67 69 6F 6E 61 6C 20 50 4D 4F 20 5A 75 72 69 63 + 68 04 00 00 35 37 34 34 04 00 00 36 33 30 37 05 + 00 00 31 30 39 30 31 04 00 00 36 34 35 31 04 00 + 00 34 35 30 30 05 00 00 31 31 36 34 37 05 00 00 + 31 32 37 30 30 04 00 00 33 38 34 30 04 00 00 36 + 37 39 33 05 00 00 31 32 39 30 36 04 00 00 35 33 + 32 36 04 00 00 36 38 35 33 05 00 00 31 32 38 35 + 34 04 00 00 35 35 38 31 05 00 00 31 32 39 36 35 + 04 00 00 33 30 38 37 04 00 00 34 33 36 31 04 00 + 00 33 39 37 30 04 00 00 35 32 38 39 04 00 00 38 + 35 38 38 05 00 00 31 30 36 39 30 05 00 00 31 33 + 31 34 37 04 00 00 36 39 38 34 05 00 00 31 31 31 + 33 31 04 00 00 36 38 32 30 04 00 00 34 33 35 36 + 04 00 00 35 35 38 32 04 00 00 33 30 31 34 04 00 + 00 31 34 34 33 04 00 00 35 32 38 36 04 00 00 37 + 32 32 37 05 00 00 31 31 39 37 32 04 00 00 34 35 + 35 34 04 00 00 34 32 36 35 04 00 00 33 36 35 36 + 04 00 00 38 30 37 31 03 00 00 32 39 30 04 00 00 + 35 39 31 38 04 00 00 36 39 33 31 04 00 00 35 36 + 33 30 04 00 00 36 35 34 30 04 00 00 38 34 35 34 + 04 00 00 38 30 36 31 04 00 00 35 30 31 35 05 00 + 00 34 32 31 30 34 0C 00 00 55 6E 64 65 72 77 72 + 69 74 65 72 2C 04 00 00 37 32 35 36 04 00 00 37 + 36 37 34 04 00 00 37 37 38 36 04 00 00 38 37 31 + 34 04 00 00 38 37 31 39 04 00 00 36 33 36 35 04 + 00 00 38 39 35 37 04 00 00 32 37 31 38 04 00 00 + 36 32 39 31 05 00 00 31 31 39 34 37 04 00 00 33 + 30 33 33 04 00 00 38 34 36 30 04 00 00 36 32 36 + 36 04 00 00 33 32 39 39 04 00 00 37 38 38 39 04 + 00 00 32 37 33 30 05 00 00 31 31 33 38 31 05 00 + 00 31 30 36 34 38 04 00 00 37 33 37 33 04 00 00 + 35 30 35 30 04 00 00 38 36 31 39 04 00 00 37 31 + 34 36 04 00 00 34 33 31 33 04 00 00 35 38 33 35 + 04 00 00 38 37 35 38 04 00 00 37 30 37 31 05 00 + 00 31 33 30 36 36 04 00 00 37 37 36 35 04 00 00 + 34 34 36 38 05 00 00 31 31 38 36 31 04 00 00 35 + 38 39 34 04 00 00 32 34 33 38 04 00 00 33 31 38 + 38 04 00 00 34 32 35 37 03 00 00 31 35 38 04 00 + 00 39 32 34 39 12 00 00 41 73 73 6F 63 69 61 74 + 65 20 44 69 72 65 63 74 6F 72 03 00 00 36 31 36 + 05 00 00 31 31 30 36 34 04 00 00 34 36 32 36 04 + 00 00 36 33 31 37 05 00 00 31 31 35 35 33 05 00 + 00 31 31 32 39 38 04 00 00 32 32 35 34 04 00 00 + 39 35 33 31 04 00 00 38 33 31 38 02 00 00 34 35 + 04 00 00 35 34 33 30 04 00 00 37 30 37 36 04 00 + 00 36 38 36 34 05 00 00 31 32 34 35 38 04 00 00 + 35 34 38 35 05 00 00 38 30 30 39 33 04 00 00 35 + 39 37 31 04 00 00 36 34 37 32 04 00 00 36 36 31 + 39 05 00 00 31 31 34 31 30 04 00 00 35 32 39 36 + 04 00 00 38 36 33 30 04 00 00 38 30 32 38 04 00 + 00 31 38 32 36 04 00 00 36 38 35 31 diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecordCR b/src/testcases/org/apache/poi/hssf/data/BigSSTRecordCR new file mode 100755 index 0000000000..c35783de8b --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecordCR @@ -0,0 +1,225 @@ +3C 00 FD 0D 00 6C 05 00 00 47 2D 35 31 35 04 +00 00 32 37 38 38 04 00 00 32 32 34 38 04 00 00 +34 38 30 37 03 00 00 32 32 37 13 00 00 50 6C 79 +6D 6F 75 74 68 20 50 54 20 43 72 75 69 73 65 72 +18 00 00 53 74 61 72 20 54 72 65 6B 20 53 70 61 +63 65 20 53 68 69 70 20 53 65 74 3B 00 00 54 4F +53 20 45 6E 74 65 72 70 72 69 73 65 2C 20 4B 6C +69 6E 67 6F 6E 20 42 61 74 74 6C 65 63 72 75 69 +73 65 72 2C 20 52 6F 6D 75 6C 61 6E 20 42 69 72 +64 20 6F 66 20 50 72 65 79 14 00 00 46 6F 63 6B +65 2D 57 75 6C 66 20 46 77 31 39 30 20 44 2D 39 +05 00 00 32 34 32 32 38 12 00 00 46 65 72 72 61 +72 69 20 33 36 30 20 4D 6F 64 65 6E 61 07 00 00 +38 35 2D 35 36 30 37 0D 00 00 43 2D 34 37 20 53 +6B 79 74 72 61 69 6E 11 00 00 43 6C 61 73 73 69 +63 20 41 69 72 66 72 61 6D 65 73 03 00 00 34 33 +39 15 00 00 42 72 69 73 74 6F 6C 20 42 6C 65 6E +68 65 69 6D 20 4D 6B 20 49 19 00 00 46 69 6E 6E +69 73 68 2F 59 75 67 6F 73 6C 61 76 20 6D 61 72 +6B 69 6E 67 73 05 00 00 35 31 30 33 38 0F 00 00 +4A 75 6E 6B 65 72 73 20 4A 75 38 37 47 2D 32 16 +00 00 22 53 75 70 65 72 20 44 65 74 61 69 6C 20 +47 75 6E 20 50 6F 64 22 05 00 00 35 31 30 34 30 +0C 00 00 54 79 70 68 6F 6F 6E 20 4D 2E 49 42 0E +00 00 22 53 75 70 65 72 20 44 65 74 61 69 6C 22 +05 00 00 34 38 30 36 31 04 00 00 36 36 37 37 04 +00 00 5A 30 30 35 09 00 00 4D 6F 74 6F 72 69 7A +65 64 07 00 00 38 35 2D 35 38 34 31 39 00 00 77 +2F 56 65 72 6C 69 6E 64 65 6E 20 64 65 74 61 69 +6C 20 73 65 74 20 31 34 37 34 20 61 6E 64 20 54 +72 75 65 20 44 65 74 61 69 6C 73 20 77 68 65 65 +6C 73 20 34 38 30 31 37 45 00 00 77 2F 57 61 72 +72 69 6F 72 20 57 41 20 57 31 30 30 31 20 44 4F +2D 33 33 35 20 22 50 66 69 65 6C 22 20 44 65 74 +61 69 6C 20 53 65 74 2C 20 61 6C 73 6F 20 56 65 +72 6C 69 6E 64 65 6E 20 73 65 74 20 31 36 32 39 +04 00 00 36 37 39 30 0D 00 00 43 75 72 74 69 73 +73 20 50 2D 33 36 41 36 00 00 77 2F 20 53 71 75 +61 64 72 6F 6E 20 63 61 6E 6F 70 79 20 61 6E 64 +20 52 61 72 65 70 6C 61 6E 65 73 20 59 50 2D 33 +37 20 63 6F 6E 76 65 72 73 69 6F 6E 20 6B 69 74 +07 00 00 38 35 2D 37 36 33 33 15 00 00 56 6F 6C +6B 73 77 61 67 65 6E 20 56 61 6E 20 43 61 6D 70 +65 72 04 00 00 38 32 34 38 0F 00 00 48 61 72 64 +20 48 61 74 20 48 61 75 6C 65 72 04 00 00 38 37 +38 39 1A 00 01 43 00 75 00 74 00 2D 00 41 00 77 +00 61 00 79 00 20 00 4D 00 69 00 6C 00 6C 00 65 +00 6E 00 69 00 75 00 6D 00 20 00 46 00 61 00 6C +00 63 00 6F 00 6E 00 22 21 05 00 00 36 31 30 33 +31 20 00 00 55 2E 53 2E 20 4E 61 76 79 20 42 72 +65 77 73 74 65 72 20 46 32 41 2D 32 20 42 75 66 +66 61 6C 6F 05 00 00 36 30 37 34 30 1D 00 00 55 +2E 53 2E 41 2E 46 2E 20 42 65 6C 6C 20 58 2D 31 +20 4D 61 63 68 20 42 75 73 74 65 72 05 00 00 36 +31 30 34 35 21 00 00 48 79 61 6B 75 73 68 69 6B +69 20 53 68 69 74 65 69 20 49 49 49 20 52 65 63 +6F 6E 20 50 6C 61 6E 65 05 00 00 36 31 30 34 37 +1E 00 00 4E 6F 72 74 68 20 41 6D 65 72 69 63 61 +6E 20 52 41 46 20 4D 75 73 74 61 6E 67 20 49 49 +49 07 00 00 38 35 2D 32 35 37 32 14 00 00 41 63 +75 72 61 20 49 6E 74 65 67 72 61 20 54 79 70 65 +20 52 07 00 00 38 35 2D 32 34 38 39 10 00 00 35 +36 20 43 68 65 76 79 AE 20 4E 6F 6D 61 64 AE 04 +00 00 32 32 36 39 10 00 00 43 6F 72 76 65 74 74 +65 20 41 6D 65 72 69 63 61 03 00 00 31 30 34 1F +00 00 4D 65 73 73 65 72 73 63 68 6D 69 74 74 20 +4D 65 2D 33 32 31 20 44 2D 31 20 47 69 67 61 6E +74 05 00 00 36 31 30 34 38 0F 00 00 44 65 77 6F +69 74 69 6E 65 20 44 2E 35 32 30 07 00 00 38 35 +2D 31 36 35 36 4B 00 00 77 2F 69 6E 74 65 72 69 +6F 72 20 61 6E 64 20 65 78 74 65 72 69 6F 72 20 +64 65 74 61 69 6C 20 73 65 74 73 2C 20 65 6E 67 +69 6E 65 73 2C 20 77 68 65 65 6C 20 73 65 74 2C +20 61 6E 64 20 6E 65 77 20 64 65 63 61 6C 73 2C +20 43 44 04 00 00 4A 54 33 31 0D 00 00 50 2D 35 +31 4B 20 4D 75 73 74 61 6E 67 12 00 00 46 6F 63 +6B 65 2D 57 75 6C 66 65 20 46 77 31 39 30 46 04 +00 00 37 31 33 36 1F 00 00 48 6F 74 20 52 6F 64 +20 43 75 73 74 6F 6D 20 4D 6F 64 65 6C 20 27 41 +27 20 50 69 63 6B 75 70 04 00 00 32 37 35 30 19 +00 00 32 39 20 46 6F 72 64 20 50 69 63 6B 75 70 +20 53 74 72 65 65 74 20 52 6F 64 09 00 00 45 53 +43 69 2F 45 52 54 4C 04 00 00 34 31 30 31 12 00 +00 43 75 72 74 69 73 73 20 50 2D 33 36 41 20 48 +61 77 6B 04 00 00 38 30 32 38 16 00 00 31 39 35 +37 20 46 6F 72 64 20 46 61 69 72 6C 61 6E 65 20 +35 30 30 08 00 00 4D 50 43 2F 45 52 54 4C 04 00 +00 36 32 32 31 0E 00 00 44 65 6F 72 61 20 53 68 +6F 77 20 43 61 72 04 00 00 34 38 30 33 1E 00 00 +42 65 6C 6C 20 58 50 2D 37 37 20 4C 69 67 68 74 +77 65 69 67 68 74 20 46 69 67 68 74 65 72 04 00 +00 4A 54 37 35 0E 00 00 46 34 55 2D 35 4E 20 43 +6F 72 73 61 69 72 04 00 00 38 36 31 39 1A 00 00 +4E 6F 72 74 68 72 6F 70 20 59 42 2D 34 39 20 46 +6C 79 69 6E 67 20 57 69 6E 67 04 00 00 38 31 32 +35 04 00 00 42 6F 61 74 1B 00 00 33 20 69 6E 20 +31 20 43 75 73 74 6F 6D 69 7A 69 6E 67 20 42 6F +61 74 20 4B 69 74 04 00 00 32 32 37 38 0E 00 00 +43 69 74 61 74 69 6F 6E 20 54 75 72 62 6F 05 00 +00 34 38 30 33 31 1A 00 00 59 61 6B 2D 37 41 20 +57 57 49 49 20 53 6F 76 69 65 74 20 46 69 67 68 +74 65 72 03 00 00 38 36 31 15 00 00 46 6F 63 6B +65 20 57 75 6C 66 20 54 41 2D 31 35 32 20 48 2D +31 11 00 00 77 2F 4D 6F 73 6B 69 74 20 65 78 68 +61 75 73 74 73 06 00 00 46 75 6A 69 6D 69 16 00 +00 46 6F 63 6B 65 2D 57 75 6C 66 20 46 77 31 39 +30 41 36 2D 3E 41 39 14 00 00 77 2F 54 72 75 65 +20 44 65 74 61 69 6C 20 77 68 65 65 6C 73 06 00 +00 52 55 31 30 30 32 05 00 00 4D 43 2D 30 35 0A +00 00 56 6F 6C 6B 73 77 61 67 65 6E 1C 00 00 53 +74 6F 63 6B 20 6F 72 20 41 41 2F 41 6C 74 65 72 +65 64 20 56 57 20 43 6F 75 70 65 07 00 00 38 35 +2D 35 35 31 30 0D 00 00 42 2D 32 36 20 4D 61 72 +61 75 64 65 72 2C 00 00 53 70 65 63 69 61 6C 20 +45 64 69 74 69 6F 6E 20 77 2F 72 65 73 69 6E 20 +70 61 72 74 73 3B 20 73 6B 69 6C 6C 20 6C 65 76 +65 6C 20 33 06 00 00 4D 65 20 33 30 39 04 00 00 +38 35 38 35 19 00 00 45 6C 65 63 74 72 6F 6E 69 +63 20 58 2D 57 69 6E 67 20 46 69 67 68 74 65 72 +04 00 00 38 30 33 36 0D 00 00 50 2D 34 30 4E 20 +57 61 72 68 61 77 6B 09 00 00 50 72 6F 66 69 70 +61 63 6B 06 00 00 48 2D 31 32 31 37 15 00 00 41 +75 73 74 69 6E 20 48 65 61 6C 65 79 20 31 30 30 +2D 53 69 78 03 00 00 32 31 32 11 00 00 54 68 75 +6E 64 65 72 62 6F 6C 74 20 50 2D 34 37 44 03 00 +00 32 31 35 0D 00 00 46 38 46 2D 32 20 42 65 61 +72 63 61 74 03 00 00 4D 50 4D 05 00 00 34 38 30 +32 38 13 00 00 46 6F 63 6B 65 2D 57 75 6C 66 20 +46 77 20 31 39 30 20 53 2F 00 00 45 78 70 65 72 +74 20 53 65 72 69 65 73 3B 20 77 69 74 68 20 72 +65 73 69 6E 20 61 6E 64 20 70 68 6F 74 6F 2D 65 +74 63 68 20 64 65 74 61 69 6C 07 00 00 38 35 2D +35 37 30 36 12 00 00 42 2D 32 39 20 53 75 70 65 +72 66 6F 72 74 72 65 73 73 16 00 00 77 2F 45 2D +5A 20 6D 61 73 6B 20 63 61 6E 6F 70 79 20 6D 61 +73 6B 20 00 00 77 2F 64 65 74 61 69 6C 20 73 65 +74 20 61 6E 64 20 4D 6F 73 6B 69 74 20 65 78 68 +61 75 73 74 73 33 00 00 53 6B 69 6C 6C 20 6C 65 +76 65 6C 20 33 2C 20 77 69 74 68 20 72 65 73 69 +6E 20 65 6E 67 69 6E 65 20 28 45 6E 67 69 6E 65 +73 20 26 20 54 68 69 6E 67 73 29 05 00 00 34 38 +30 33 34 13 00 00 46 6F 63 6B 65 2D 57 75 6C 66 +20 46 77 20 31 38 39 20 41 05 00 00 32 34 30 34 +36 17 00 00 4C 6F 74 75 73 20 53 75 70 65 72 20 +37 20 53 65 72 69 65 73 20 49 49 04 00 00 33 34 +33 31 10 00 00 42 2D 32 35 43 2F 44 20 4D 69 74 +63 68 65 6C 6C 09 00 00 54 72 69 6D 61 73 74 65 +72 22 00 00 46 6F 63 6B 65 2D 57 75 6C 66 20 46 +77 31 39 30 41 2D 38 2F 52 31 31 20 4E 61 63 68 +74 6A 61 67 65 72 05 00 00 34 38 30 30 31 16 00 +00 4D 65 73 73 65 72 73 63 68 6D 69 74 74 20 42 +66 31 30 39 4B 2D 34 12 00 00 77 2F 72 65 73 69 +6E 20 64 65 74 61 69 6C 20 73 65 74 04 00 00 32 +37 34 31 18 00 00 46 6F 72 64 20 53 74 72 65 65 +74 20 22 54 22 20 52 6F 61 64 73 74 65 72 04 00 +00 30 31 39 34 0E 00 00 54 68 65 20 53 70 61 63 +65 20 54 61 78 69 02 00 00 4A 31 17 00 00 4D 65 +73 73 65 72 73 63 68 6D 69 74 74 20 42 66 31 30 +39 20 45 2D 33 1F 00 00 77 2F 56 65 72 6C 69 6E +64 65 6E 20 73 75 70 65 72 2D 74 65 63 68 20 6B +69 74 20 23 33 38 34 07 00 00 38 35 2D 32 35 31 +37 27 00 00 31 31 20 53 74 65 76 65 20 4B 69 6E +73 65 72 20 51 75 61 6B 65 72 20 53 74 61 74 65 +20 53 70 72 69 6E 74 20 43 61 72 07 00 00 38 35 +2D 37 33 31 30 03 00 00 31 2F 38 0A 00 00 4D 6F +74 6F 72 63 79 63 6C 65 21 00 01 58 00 4C 00 22 +21 20 00 31 00 32 00 30 00 30 00 20 00 53 00 70 +00 6F 00 72 00 74 00 73 00 74 00 65 00 72 00 28 +00 52 00 29 00 20 00 31 00 32 00 30 00 30 00 20 +00 43 00 75 00 73 00 74 00 6F 00 6D 00 04 00 00 +36 31 33 35 1A 00 00 36 32 20 50 6F 6E 74 69 61 +63 20 43 61 74 61 6C 69 6E 61 20 43 75 73 74 6F +6D 03 00 00 39 31 32 0D 00 00 43 75 72 74 69 73 +73 20 52 61 63 65 72 05 00 00 33 31 32 32 30 16 +00 00 32 39 20 46 6F 72 64 20 57 6F 6F 64 79 20 +2F 20 50 69 63 6B 75 70 0B 00 00 52 2E 20 56 2E +20 52 65 73 69 6E 19 00 00 46 6F 63 6B 65 20 57 +75 6C 66 20 54 61 20 31 35 32 43 2D 30 20 28 56 +37 29 07 00 00 38 35 2D 37 36 37 39 2B 00 00 36 +34 20 46 6F 72 64 20 46 61 69 72 6C 61 6E 65 20 +54 68 75 6E 64 65 72 62 6F 6C 74 20 53 74 72 65 +65 74 20 4D 61 63 68 69 6E 65 04 00 00 38 32 30 +37 21 00 00 31 39 36 37 20 43 68 65 76 72 6F 6C +65 74 20 49 6D 70 61 6C 61 20 53 75 70 65 72 20 +53 70 6F 72 74 07 00 00 38 35 2D 31 39 31 34 13 +00 00 43 68 72 79 73 6C 65 72 20 50 54 20 43 72 +75 69 73 65 72 05 00 00 36 31 30 35 34 11 00 00 +41 69 63 68 69 20 4D 36 41 31 20 53 65 69 72 65 +6E 07 00 00 38 35 2D 32 31 34 34 0B 00 01 4B 00 +69 00 6C 00 6C 00 65 00 72 00 20 00 42 00 65 00 +65 00 22 21 1A 00 01 42 00 6C 00 61 00 63 00 6B +00 20 00 54 00 6F 00 70 00 20 00 57 00 61 00 72 +00 72 00 69 00 6F 00 72 00 73 00 22 21 20 00 73 +00 65 00 72 00 69 00 65 00 73 00 05 00 00 33 30 +30 38 39 16 00 00 33 32 20 46 6F 72 64 20 50 68 +61 6E 74 6F 6D 20 56 69 63 6B 69 65 07 00 00 38 +35 2D 34 31 35 31 18 00 00 54 6F 6E 79 20 4E 61 +6E 63 79 27 73 20 52 65 76 65 6C 6C 6C 69 6E 65 +72 07 00 00 38 35 2D 35 38 33 34 0E 00 00 46 2D +31 31 37 41 20 53 74 65 61 6C 74 68 24 00 00 53 +6B 69 6C 6C 20 6C 65 76 65 6C 20 33 2C 20 77 69 +74 68 20 70 68 6F 74 6F 2D 65 74 63 68 20 70 61 +72 74 73 04 00 00 35 36 30 38 0F 00 00 42 2D 32 +34 4A 20 4C 69 62 65 72 61 74 6F 72 04 00 00 4D +41 2D 37 04 00 00 4D 41 2D 33 1B 00 00 48 65 69 +6E 6B 65 6C 20 48 65 31 36 32 41 2D 32 20 56 6F +6C 6B 73 6A 61 67 65 72 05 00 00 33 30 32 37 33 +0C 00 00 41 4D 54 20 41 6D 74 72 6F 6E 69 63 04 +00 00 37 38 30 33 14 00 00 54 42 4D 2D 33 2F 54 +42 46 2D 31 43 20 41 76 65 6E 67 65 72 13 00 00 +77 2F 41 65 72 6F 6D 61 73 74 65 72 20 64 65 63 +61 6C 73 04 00 00 37 38 30 36 1B 00 00 53 42 44 +2D 33 2F 53 42 44 2D 34 2F 53 42 44 2D 35 20 44 +61 75 6E 74 6C 65 73 73 05 00 00 36 31 30 37 31 +20 00 00 46 61 69 72 65 79 20 53 77 6F 72 64 66 +69 73 68 20 4D 6B 2E 49 20 46 6C 6F 61 74 70 6C +61 6E 65 04 00 00 37 35 37 35 10 00 00 44 65 76 +61 73 74 61 74 6F 72 20 54 42 44 2D 31 04 00 00 +32 31 37 39 12 00 00 50 2D 32 36 41 2F 43 20 50 +65 61 73 68 6F 6F 74 65 72 06 00 00 34 35 34 3A +34 39 09 00 00 43 61 72 61 76 65 6C 6C 65 03 00 +00 35 30 36 0D 00 00 4F 56 2D 31 30 41 20 42 72 +6F 6E 63 6F 07 00 00 38 35 2D 35 39 32 39 11 00 +00 50 2D 34 37 4E 20 54 68 75 6E 64 65 72 62 6F +6C 74 diff --git a/src/testcases/org/apache/poi/hssf/data/Employee.xls b/src/testcases/org/apache/poi/hssf/data/Employee.xls Binary files differnew file mode 100755 index 0000000000..bb9be26b9d --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/Employee.xls diff --git a/src/testcases/org/apache/poi/hssf/data/Simple.xls b/src/testcases/org/apache/poi/hssf/data/Simple.xls Binary files differnew file mode 100755 index 0000000000..b06799fea5 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/Simple.xls diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleChart.xls b/src/testcases/org/apache/poi/hssf/data/SimpleChart.xls Binary files differnew file mode 100755 index 0000000000..7a980800c7 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/SimpleChart.xls diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xls Binary files differnew file mode 100755 index 0000000000..758b341906 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xls diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xls Binary files differnew file mode 100755 index 0000000000..11b81aeca2 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xls diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xls Binary files differnew file mode 100755 index 0000000000..b5793d251b --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xls diff --git a/src/testcases/org/apache/poi/hssf/data/rk.xls b/src/testcases/org/apache/poi/hssf/data/rk.xls Binary files differnew file mode 100755 index 0000000000..5fcc558648 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/rk.xls diff --git a/src/testcases/org/apache/poi/hssf/data/test_properties1 b/src/testcases/org/apache/poi/hssf/data/test_properties1 new file mode 100755 index 0000000000..d4800280ec --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/data/test_properties1 @@ -0,0 +1,11 @@ +# Set root category priority to DEBUG and its only appender to A1. +log4j.rootCategory=DEBUG, A1 + +# A1 is set to be a FileAppender. +log4j.appender.A1=org.apache.log4j.FileAppender +log4j.appender.A1.File=p1.log + +# A1 uses PatternLayout. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +#log4j.category.org.apache.cocoon.poi=WARN diff --git a/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java b/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java new file mode 100644 index 0000000000..be582ab1e7 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java @@ -0,0 +1,167 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.hssf.record; + +import junit.framework.TestCase; + +/** + * Tests the record factory + * @author Glen Stampoultzis (gstamp at iprimus dot com dot au) + * @author Andrew C. Oliver (acoliver at apache dot org) + */ + +public class TestRecordFactory + extends TestCase +{ + + /** + * Creates new TestRecordFactory + * @param testCaseName + */ + + public TestRecordFactory(String testCaseName) + { + super(testCaseName); + } + + /** + * TEST NAME: Test Basic Record Construction <P> + * OBJECTIVE: Test that the RecordFactory given the required parameters for know + * record types can construct the proper record w/values.<P> + * SUCCESS: Record factory creates the records with the expected values.<P> + * FAILURE: The wrong records are creates or contain the wrong values <P> + * + */ + + public void testBasicRecordConstruction() + throws Exception + { + short recType = BOFRecord.sid; + byte[] data = new byte[] + { + 0, 6, 5, 0, -2, 28, -51, 7, -55, 64, 0, 0, 6, 1, 0, 0 + }; + short size = 16; + Record[] record = RecordFactory.createRecord(recType, size, data); + + assertEquals(BOFRecord.class.getName(), + record[ 0 ].getClass().getName()); + BOFRecord bofRecord = ( BOFRecord ) record[ 0 ]; + + assertEquals(7422, bofRecord.getBuild()); + assertEquals(1997, bofRecord.getBuildYear()); + assertEquals(16585, bofRecord.getHistoryBitMask()); + assertEquals(20, bofRecord.getRecordSize()); + assertEquals(262, bofRecord.getRequiredVersion()); + assertEquals(2057, bofRecord.getSid()); + assertEquals(5, bofRecord.getType()); + assertEquals(1536, bofRecord.getVersion()); + recType = MMSRecord.sid; + size = 2; + data = new byte[] + { + 0, 0 + }; + record = RecordFactory.createRecord(recType, size, data); + assertEquals(MMSRecord.class.getName(), + record[ 0 ].getClass().getName()); + MMSRecord mmsRecord = ( MMSRecord ) record[ 0 ]; + + assertEquals(0, mmsRecord.getAddMenuCount()); + assertEquals(0, mmsRecord.getDelMenuCount()); + assertEquals(6, mmsRecord.getRecordSize()); + assertEquals(193, mmsRecord.getSid()); + } + + /** + * TEST NAME: Test Special Record Construction <P> + * OBJECTIVE: Test that the RecordFactory given the required parameters for + * constructing a RKRecord will return a NumberRecord.<P> + * SUCCESS: Record factory creates the Number record with the expected values.<P> + * FAILURE: The wrong records are created or contain the wrong values <P> + * + */ + + public void testSpecial() + throws Exception + { + short recType = RKRecord.sid; + byte[] data = new byte[] + { + 0, 0, 0, 0, 21, 0, 0, 0, 0, 0 + }; + short size = 10; + Record[] record = RecordFactory.createRecord(recType, size, data); + + assertEquals(NumberRecord.class.getName(), + record[ 0 ].getClass().getName()); + NumberRecord numberRecord = ( NumberRecord ) record[ 0 ]; + + assertEquals(0, numberRecord.getColumn()); + assertEquals(18, numberRecord.getRecordSize()); + assertEquals(0, numberRecord.getRow()); + assertEquals(515, numberRecord.getSid()); + assertEquals(0.0, numberRecord.getValue(), 0.001); + assertEquals(21, numberRecord.getXFIndex()); + } + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.hssf.record.TestRecordFactory"); + junit.textui.TestRunner.run(TestRecordFactory.class); + } +} diff --git a/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java new file mode 100644 index 0000000000..56e6fec764 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java @@ -0,0 +1,574 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.hssf.record; + +import org.apache.poi.util.*; + +import junit.framework.*; + +import java.io.*; + +import java.util.*; + +/** + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestSSTRecord + extends TestCase +{ + private String _test_file_path; + private static final String _test_file_path_property = + "HSSF.testdata.path"; + + /** + * Creates new TestSSTRecord + * + * @param name + */ + + public TestSSTRecord(String name) + { + super(name); + _test_file_path = System.getProperty(_test_file_path_property); + } + + /** + * test processContinueRecord + * + * @exception IOException + */ + + public void testProcessContinueRecord() + throws IOException + { + byte[] testdata = readTestData("BigSSTRecord"); + byte[] input = new byte[ testdata.length - 4 ]; + + System.arraycopy(testdata, 4, input, 0, input.length); + SSTRecord record = + new SSTRecord(LittleEndian.getShort(testdata, 0), + LittleEndian.getShort(testdata, 2), input); + byte[] continueRecord = readTestData("BigSSTRecordCR"); + + input = new byte[ continueRecord.length - 4 ]; + System.arraycopy(continueRecord, 4, input, 0, input.length); + record.processContinueRecord(input); + assertEquals(1464, record.getNumStrings()); + assertEquals(688, record.getNumUniqueStrings()); + assertEquals(688, record.countStrings()); + byte[] ser_output = record.serialize(); + int offset = 0; + short type = LittleEndian.getShort(ser_output, offset); + + offset += LittleEndianConsts.SHORT_SIZE; + short length = LittleEndian.getShort(ser_output, offset); + + offset += LittleEndianConsts.SHORT_SIZE; + byte[] recordData = new byte[ length ]; + + System.arraycopy(ser_output, offset, recordData, 0, length); + offset += length; + SSTRecord testRecord = new SSTRecord(type, length, recordData); + + assertEquals(ContinueRecord.sid, + LittleEndian.getShort(ser_output, offset)); + offset += LittleEndianConsts.SHORT_SIZE; + length = LittleEndian.getShort(ser_output, offset); + offset += LittleEndianConsts.SHORT_SIZE; + byte[] cr = new byte[ length ]; + + System.arraycopy(ser_output, offset, cr, 0, length); + offset += length; + assertEquals(offset, ser_output.length); + testRecord.processContinueRecord(cr); + assertEquals(record, testRecord); + + // testing based on new bug report + testdata = readTestData("BigSSTRecord2"); + input = new byte[ testdata.length - 4 ]; + System.arraycopy(testdata, 4, input, 0, input.length); + record = new SSTRecord(LittleEndian.getShort(testdata, 0), + LittleEndian.getShort(testdata, 2), input); + byte[] continueRecord1 = readTestData("BigSSTRecord2CR1"); + + input = new byte[ continueRecord1.length - 4 ]; + System.arraycopy(continueRecord1, 4, input, 0, input.length); + record.processContinueRecord(input); + byte[] continueRecord2 = readTestData("BigSSTRecord2CR2"); + + input = new byte[ continueRecord2.length - 4 ]; + System.arraycopy(continueRecord2, 4, input, 0, input.length); + record.processContinueRecord(input); + byte[] continueRecord3 = readTestData("BigSSTRecord2CR3"); + + input = new byte[ continueRecord3.length - 4 ]; + System.arraycopy(continueRecord3, 4, input, 0, input.length); + record.processContinueRecord(input); + byte[] continueRecord4 = readTestData("BigSSTRecord2CR4"); + + input = new byte[ continueRecord4.length - 4 ]; + System.arraycopy(continueRecord4, 4, input, 0, input.length); + record.processContinueRecord(input); + byte[] continueRecord5 = readTestData("BigSSTRecord2CR5"); + + input = new byte[ continueRecord5.length - 4 ]; + System.arraycopy(continueRecord5, 4, input, 0, input.length); + record.processContinueRecord(input); + byte[] continueRecord6 = readTestData("BigSSTRecord2CR6"); + + input = new byte[ continueRecord6.length - 4 ]; + System.arraycopy(continueRecord6, 4, input, 0, input.length); + record.processContinueRecord(input); + byte[] continueRecord7 = readTestData("BigSSTRecord2CR7"); + + input = new byte[ continueRecord7.length - 4 ]; + System.arraycopy(continueRecord7, 4, input, 0, input.length); + record.processContinueRecord(input); + assertEquals(158642, record.getNumStrings()); + assertEquals(5249, record.getNumUniqueStrings()); + assertEquals(5249, record.countStrings()); + ser_output = record.serialize(); + offset = 0; + type = LittleEndian.getShort(ser_output, offset); + offset += LittleEndianConsts.SHORT_SIZE; + length = LittleEndian.getShort(ser_output, offset); + offset += LittleEndianConsts.SHORT_SIZE; + recordData = new byte[ length ]; + System.arraycopy(ser_output, offset, recordData, 0, length); + offset += length; + testRecord = new SSTRecord(type, length, recordData); + for (int count = 0; count < 7; count++) + { + assertEquals(ContinueRecord.sid, + LittleEndian.getShort(ser_output, offset)); + offset += LittleEndianConsts.SHORT_SIZE; + length = LittleEndian.getShort(ser_output, offset); + offset += LittleEndianConsts.SHORT_SIZE; + cr = new byte[ length ]; + System.arraycopy(ser_output, offset, cr, 0, length); + testRecord.processContinueRecord(cr); + offset += length; + } + assertEquals(offset, ser_output.length); + assertEquals(record, testRecord); + } + + /** + * Test capability of handling mondo big strings + * + * @exception IOException + */ + + public void testHugeStrings() + throws IOException + { + SSTRecord record = new SSTRecord(); + byte[][] bstrings = + { + new byte[ 9000 ], new byte[ 7433 ], new byte[ 9002 ], + new byte[ 16998 ] + }; + String[] strings = new String[ bstrings.length ]; + int total_length = 0; + + for (int k = 0; k < bstrings.length; k++) + { + Arrays.fill(bstrings[ k ], ( byte ) ('a' + k)); + strings[ k ] = new String(bstrings[ k ]); + record.addString(strings[ k ]); + total_length += 3 + bstrings[ k ].length; + } + + // add overhead of SST record + total_length += 8; + + // add overhead of broken strings + total_length += 4; + + // add overhead of six records + total_length += (6 * 4); + byte[] content = new byte[ record.getRecordSize() ]; + + record.serialize(0, content); + assertEquals(total_length, content.length); + for (int index = 0; index != content.length; ) + { + short record_type = LittleEndian.getShort(content, index); + + index += LittleEndianConsts.SHORT_SIZE; + short record_length = LittleEndian.getShort(content, index); + + index += LittleEndianConsts.SHORT_SIZE; + byte[] data = new byte[ record_length ]; + + System.arraycopy(content, index, data, 0, record_length); + index += record_length; + if (record_type == SSTRecord.sid) + { + record = new SSTRecord(record_type, record_length, data); + } + else + { + record.processContinueRecord(data); + } + } + assertEquals(strings.length, record.getNumStrings()); + assertEquals(strings.length, record.getNumUniqueStrings()); + assertEquals(strings.length, record.countStrings()); + for (int k = 0; k < strings.length; k++) + { + assertEquals(strings[ k ], record.getString(k)); + } + record = new SSTRecord(); + bstrings[ 1 ] = new byte[ bstrings[ 1 ].length - 1 ]; + for (int k = 0; k < bstrings.length; k++) + { + if ((bstrings[ k ].length % 2) == 1) + { + Arrays.fill(bstrings[ k ], ( byte ) ('a' + k)); + strings[ k ] = new String(bstrings[ k ]); + } + else + { + char[] data = new char[ bstrings[ k ].length / 2 ]; + + Arrays.fill(data, ( char ) ('\u2122' + k)); + strings[ k ] = new String(data); + } + record.addString(strings[ k ]); + } + content = new byte[ record.getRecordSize() ]; + record.serialize(0, content); + total_length--; + assertEquals(total_length, content.length); + for (int index = 0; index != content.length; ) + { + short record_type = LittleEndian.getShort(content, index); + + index += LittleEndianConsts.SHORT_SIZE; + short record_length = LittleEndian.getShort(content, index); + + index += LittleEndianConsts.SHORT_SIZE; + byte[] data = new byte[ record_length ]; + + System.arraycopy(content, index, data, 0, record_length); + index += record_length; + if (record_type == SSTRecord.sid) + { + record = new SSTRecord(record_type, record_length, data); + } + else + { + record.processContinueRecord(data); + } + } + assertEquals(strings.length, record.getNumStrings()); + assertEquals(strings.length, record.getNumUniqueStrings()); + assertEquals(strings.length, record.countStrings()); + for (int k = 0; k < strings.length; k++) + { + assertEquals(strings[ k ], record.getString(k)); + } + } + + /** + * test SSTRecord boundary conditions + * + * @exception IOException + */ + + public void testSSTRecordBug() + throws IOException + { + + // create an SSTRecord and write a certain pattern of strings + // to it ... then serialize it and verify the content + SSTRecord record = new SSTRecord(); + + // the record will start with two integers, then this string + // ... that will eat up 16 of the 8224 bytes that the record + // can hold + record.addString("Hello"); + + // now we have an additional 8208 bytes, which is an exact + // multiple of 16 bytes + long testvalue = 1000000000000L; + + for (int k = 0; k < 2000; k++) + { + record.addString(String.valueOf(testvalue++)); + } + byte[] content = new byte[ record.getRecordSize() ]; + + record.serialize(0, content); + assertEquals(( byte ) 13, content[ 4 + 8228 ]); + assertEquals(( byte ) 13, content[ 4 + 8228 * 2 ]); + assertEquals(( byte ) 13, content[ 4 + 8228 * 3 ]); + } + + /** + * test simple addString + */ + + public void testSimpleAddString() + { + SSTRecord record = new SSTRecord(); + String s1 = "Hello world"; + + // \u2122 is the encoding of the trademark symbol ... + String s2 = "Hello world\u2122"; + + assertEquals(0, record.addString(s1)); + assertEquals(s1, record.getString(0)); + assertEquals(1, record.countStrings()); + assertEquals(1, record.getNumStrings()); + assertEquals(1, record.getNumUniqueStrings()); + assertEquals(0, record.addString(s1)); + assertEquals(s1, record.getString(0)); + assertEquals(1, record.countStrings()); + assertEquals(2, record.getNumStrings()); + assertEquals(1, record.getNumUniqueStrings()); + assertEquals(1, record.addString(s2)); + assertEquals(s2, record.getString(1)); + assertEquals(2, record.countStrings()); + assertEquals(3, record.getNumStrings()); + assertEquals(2, record.getNumUniqueStrings()); + Iterator iter = record.getStrings(); + + while (iter.hasNext()) + { + UnicodeString ucs = ( UnicodeString ) iter.next(); + + if (ucs.getString().equals(s1)) + { + assertEquals(( byte ) 0, ucs.getOptionFlags()); + } + else if (ucs.getString().equals(s2)) + { + assertEquals(( byte ) 1, ucs.getOptionFlags()); + } + else + { + fail("cannot match string: " + ucs.getString()); + } + } + } + + /** + * test reader constructor + * + * @exception IOException + */ + + public void testReaderConstructor() + throws IOException + { + byte[] testdata = readTestData("BigSSTRecord"); + byte[] input = new byte[ testdata.length - 4 ]; + + System.arraycopy(testdata, 4, input, 0, input.length); + SSTRecord record = new SSTRecord(LittleEndian.getShort(testdata, 0), + LittleEndian.getShort(testdata, 2), + input); + + assertEquals(1464, record.getNumStrings()); + assertEquals(688, record.getNumUniqueStrings()); + assertEquals(492, record.countStrings()); + assertEquals(1, record.getExpectedChars()); + assertEquals("Consolidated B-24J Liberator The Dragon & His Tai", + record.getUnfinishedString()); + assertEquals(52, record.getTotalLength()); + assertEquals(3, record.getStringDataOffset()); + assertTrue(!record.isWideChar()); + } + + /** + * test simple constructor + */ + + public void testSimpleConstructor() + { + SSTRecord record = new SSTRecord(); + + assertEquals(0, record.getNumStrings()); + assertEquals(0, record.getNumUniqueStrings()); + assertEquals(0, record.countStrings()); + assertEquals(0, record.getExpectedChars()); + assertEquals("", record.getUnfinishedString()); + assertEquals(0, record.getTotalLength()); + assertEquals(0, record.getStringDataOffset()); + assertTrue(!record.isWideChar()); + byte[] output = record.serialize(); + byte[] expected = + { + ( byte ) record.getSid(), ( byte ) (record.getSid() >> 8), + ( byte ) 8, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0 + }; + + assertEquals(expected.length, output.length); + for (int k = 0; k < expected.length; k++) + { + assertEquals(String.valueOf(k), expected[ k ], output[ k ]); + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing hssf.record.SSTRecord functionality"); + junit.textui.TestRunner.run(TestSSTRecord.class); + } + + private byte [] readTestData(String filename) + throws IOException + { + File file = new File(_test_file_path + + File.separator + + filename); + FileInputStream stream = new FileInputStream(file); + int characterCount = 0; + byte b = ( byte ) 0; + List bytes = new ArrayList(); + boolean done = false; + + while (!done) + { + int count = stream.read(); + + switch (count) + { + + case '0' : + case '1' : + case '2' : + case '3' : + case '4' : + case '5' : + case '6' : + case '7' : + case '8' : + case '9' : + b <<= 4; + b += ( byte ) (count - '0'); + characterCount++; + if (characterCount == 2) + { + bytes.add(new Byte(b)); + characterCount = 0; + b = ( byte ) 0; + } + break; + + case 'A' : + case 'B' : + case 'C' : + case 'D' : + case 'E' : + case 'F' : + b <<= 4; + b += ( byte ) (count + 10 - 'A'); + characterCount++; + if (characterCount == 2) + { + bytes.add(new Byte(b)); + characterCount = 0; + b = ( byte ) 0; + } + break; + + case 'a' : + case 'b' : + case 'c' : + case 'd' : + case 'e' : + case 'f' : + b <<= 4; + b += ( byte ) (count + 10 - 'a'); + characterCount++; + if (characterCount == 2) + { + bytes.add(new Byte(b)); + characterCount = 0; + b = ( byte ) 0; + } + break; + + case -1 : + done = true; + break; + + default : + break; + } + } + stream.close(); + Byte[] polished = ( Byte [] ) bytes.toArray(new Byte[ 0 ]); + byte[] rval = new byte[ polished.length ]; + + for (int j = 0; j < polished.length; j++) + { + rval[ j ] = polished[ j ].byteValue(); + } + return rval; + } +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java new file mode 100644 index 0000000000..4dfd84107c --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java @@ -0,0 +1,209 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +/* + * TestCellStyle.java + * + * Created on December 11, 2001, 5:51 PM + */ +package org.apache.poi.hssf.usermodel; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +/** + * Class to test cell styling functionality + * + * @author Andrew C. Oliver + */ + +public class TestCellStyle + extends TestCase +{ + + /** Creates a new instance of TestCellStyle */ + + public TestCellStyle(String name) + { + super(name); + } + + /** + * TEST NAME: Test Write Sheet Font <P> + * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values and styled with fonts.<P> + * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects + * Last row, first row is tested against the correct values (99,0).<P> + * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good. + * HSSFSheet last row or first row is incorrect. <P> + * + * @author Andrew C. Oliver + */ + + public void testWriteSheetFont() + throws IOException + { + File file = File.createTempFile("testWriteSheetFont", + ".xls"); + FileOutputStream out = new FileOutputStream(file); + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + HSSFRow r = null; + HSSFCell c = null; + HSSFFont fnt = wb.createFont(); + HSSFCellStyle cs = wb.createCellStyle(); + + fnt.setColor(HSSFFont.COLOR_RED); + fnt.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + cs.setFont(fnt); + for (short rownum = ( short ) 0; rownum < 100; rownum++) + { + r = s.createRow(rownum); + + // r.setRowNum(( short ) rownum); + for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2) + { + c = r.createCell(cellnum, HSSFCell.CELL_TYPE_NUMERIC); + c.setCellValue(rownum * 10000 + cellnum + + ((( double ) rownum / 1000) + + (( double ) cellnum / 10000))); + c = r.createCell(( short ) (cellnum + 1), + HSSFCell.CELL_TYPE_STRING); + c.setCellValue("TEST"); + c.setCellStyle(cs); + } + } + wb.write(out); + out.close(); + assertEquals("FILE LENGTH == 87040", file.length(), 87040); + assertEquals("LAST ROW == 99", 99, s.getLastRowNum()); + assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum()); + + // assert((s.getLastRowNum() == 99)); + } + + /** + * TEST NAME: Test Write Sheet Style <P> + * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values and styled with colors + * and borders.<P> + * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects + * Last row, first row is tested against the correct values (99,0).<P> + * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good. + * HSSFSheet last row or first row is incorrect. <P> + * + * @author Andrew C. Oliver + */ + + public void testWriteSheetStyle() + throws IOException + { + File file = File.createTempFile("testWriteSheetStyle", + ".xls"); + FileOutputStream out = new FileOutputStream(file); + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + HSSFRow r = null; + HSSFCell c = null; + HSSFFont fnt = wb.createFont(); + HSSFCellStyle cs = wb.createCellStyle(); + HSSFCellStyle cs2 = wb.createCellStyle(); + + cs.setBorderBottom(HSSFCellStyle.BORDER_THIN); + cs.setBorderLeft(HSSFCellStyle.BORDER_THIN); + cs.setBorderRight(HSSFCellStyle.BORDER_THIN); + cs.setBorderTop(HSSFCellStyle.BORDER_THIN); + cs.setFillForegroundColor(( short ) 0xA); + cs.setFillPattern(( short ) 1); + fnt.setColor(( short ) 0xf); + fnt.setItalic(true); + cs2.setFillForegroundColor(( short ) 0x0); + cs2.setFillPattern(( short ) 1); + cs2.setFont(fnt); + for (short rownum = ( short ) 0; rownum < 100; rownum++) + { + r = s.createRow(rownum); + + // r.setRowNum(( short ) rownum); + for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2) + { + c = r.createCell(cellnum, HSSFCell.CELL_TYPE_NUMERIC); + c.setCellValue(rownum * 10000 + cellnum + + ((( double ) rownum / 1000) + + (( double ) cellnum / 10000))); + c.setCellStyle(cs); + c = r.createCell(( short ) (cellnum + 1), + HSSFCell.CELL_TYPE_STRING); + c.setCellValue("TEST"); + c.setCellStyle(cs2); + } + } + wb.write(out); + out.close(); + assertEquals("FILE LENGTH == 87040", file.length(), 87040); + assertEquals("LAST ROW == 99", 99, s.getLastRowNum()); + assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum()); + + // assert((s.getLastRowNum() == 99)); + } + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.hssf.usermodel.HSSFCellStyle"); + junit.textui.TestRunner.run(TestCellStyle.class); + } +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java new file mode 100644 index 0000000000..1528f91bfc --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java @@ -0,0 +1,99 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.hssf.usermodel; + +import junit.framework.TestCase; + +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * Class TestHSSFDateUtil + * + * + * @author + * @version %I%, %G% + */ + +public class TestHSSFDateUtil + extends TestCase +{ + public TestHSSFDateUtil(String s) + { + super(s); + } + + /** + * Checks the date conversion functions in the HSSFDateUtil class. + */ + + public void testDateConversion() + throws Exception + { + + // Iteratating over the hours exposes any rounding issues. + for (int hour = 0; hour < 23; hour++) + { + GregorianCalendar date = new GregorianCalendar(2002, 0, 1, + hour, 1, 1); + double excelDate = + HSSFDateUtil.getExcelDate(date.getTime()); + + assertEquals("Checking hour = " + hour, date.getTime().getTime(), + HSSFDateUtil.getJavaDate(excelDate).getTime()); + } + } +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java new file mode 100644 index 0000000000..d41ce73f2d --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -0,0 +1,170 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.hssf.usermodel; + +import junit.framework.TestCase; + +import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.Sheet; +import org.apache.poi.hssf.record.VCenterRecord; +import org.apache.poi.hssf.record.WSBoolRecord; + +import java.io.FileOutputStream; +import java.io.FileWriter; + +/** + * Class TestHSSFSheet + * + * + * @author + * @version %I%, %G% + */ + +public class TestHSSFSheet + extends TestCase +{ + public TestHSSFSheet(String s) + { + super(s); + } + + /** + * Test the gridset field gets set as expected. + */ + + public void testBackupRecord() + throws Exception + { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + Sheet sheet = s.getSheet(); + + assertEquals(true, sheet.getGridsetRecord().getGridset()); + s.setGridsPrinted(true); + assertEquals(false, sheet.getGridsetRecord().getGridset()); + } + + /** + * Test vertically centered output. + */ + + public void testVerticallyCenter() + throws Exception + { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + Sheet sheet = s.getSheet(); + VCenterRecord record = + ( VCenterRecord ) sheet.findFirstRecordBySid(VCenterRecord.sid); + + assertEquals(false, record.getVCenter()); + s.setVerticallyCenter(true); + assertEquals(true, record.getVCenter()); + + // wb.write(new FileOutputStream("c:\\test.xls")); + } + + /** + * Test WSBboolRecord fields get set in the user model. + */ + + public void testWSBool() + { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + Sheet sheet = s.getSheet(); + WSBoolRecord record = + ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid); + + // Check defaults + assertEquals(true, record.getAlternateExpression()); + assertEquals(true, record.getAlternateFormula()); + assertEquals(false, record.getAutobreaks()); + assertEquals(false, record.getDialog()); + assertEquals(false, record.getDisplayGuts()); + assertEquals(true, record.getFitToPage()); + assertEquals(false, record.getRowSumsBelow()); + assertEquals(false, record.getRowSumsRight()); + + // Alter + s.setAlternativeExpression(false); + s.setAlternativeFormula(false); + s.setAutobreaks(true); + s.setDialog(true); + s.setDisplayGuts(true); + s.setFitToPage(false); + s.setRowSumsBelow(true); + s.setRowSumsRight(true); + + // Check + assertEquals(false, record.getAlternateExpression()); + assertEquals(false, record.getAlternateFormula()); + assertEquals(true, record.getAutobreaks()); + assertEquals(true, record.getDialog()); + assertEquals(true, record.getDisplayGuts()); + assertEquals(false, record.getFitToPage()); + assertEquals(true, record.getRowSumsBelow()); + assertEquals(true, record.getRowSumsRight()); + assertEquals(false, s.getAlternateExpression()); + assertEquals(false, s.getAlternateFormula()); + assertEquals(true, s.getAutobreaks()); + assertEquals(true, s.getDialog()); + assertEquals(true, s.getDisplayGuts()); + assertEquals(false, s.getFitToPage()); + assertEquals(true, s.getRowSumsBelow()); + assertEquals(true, s.getRowSumsRight()); + } +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java b/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java new file mode 100644 index 0000000000..1c53b1c07f --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java @@ -0,0 +1,116 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.hssf.usermodel; + +import junit.framework.TestCase; + +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.hssf.model.Sheet; +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.BOFRecord; +import org.apache.poi.hssf.record.EOFRecord; + +import java.io.FileInputStream; +import java.io.FileOutputStream; + +import java.util.List; +import java.util.Iterator; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * @author Glen Stampoultzis (gstamp at iprimus dot com dot au) + */ + +public class TestReadWriteChart + extends TestCase +{ + public TestReadWriteChart(String s) + { + super(s); + } + + /** + * In the presence of a chart we need to make sure BOF/EOF records still exist. + */ + + public void testBOFandEOFRecords() + throws Exception + { + String path = System.getProperty("HSSF.testdata.path"); + String filename = path + "/SimpleChart.xls"; + POIFSFileSystem fs = + new POIFSFileSystem(new FileInputStream(filename)); + HSSFWorkbook workbook = new HSSFWorkbook(fs); + HSSFSheet sheet = workbook.getSheetAt(0); + HSSFRow firstRow = sheet.getRow(0); + HSSFCell firstCell = firstRow.getCell(( short ) 0); + + assertEquals(new GregorianCalendar(2000, 0, 1, 10, 51, 2).getTime(), + HSSFDateUtil + .getJavaDate(firstCell.getNumericCellValue())); + HSSFRow row = sheet.createRow(( short ) 15); + HSSFCell cell = row.createCell(( short ) 1, + HSSFCell.CELL_TYPE_NUMERIC); + + cell.setCellValue(22); + Sheet newSheet = workbook.getSheetAt(0).getSheet(); + List records = newSheet.getRecords(); + + assertTrue(records.get(0) instanceof BOFRecord); + assertTrue(records.get(records.size() - 1) instanceof EOFRecord); + } +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java new file mode 100644 index 0000000000..85a7129c9c --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java @@ -0,0 +1,643 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.hssf.usermodel; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.hssf.util.*; +import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.record.BackupRecord; +import org.apache.poi.hssf.record.LabelSSTRecord; +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.aggregates.ValueRecordsAggregate; + +/** + * Class to test Workbook functionality + * + * @author Andrew C. Oliver + */ + +public class TestWorkbook + extends TestCase +{ + private static final String LAST_NAME_KEY = "lastName"; + private static final String FIRST_NAME_KEY = "firstName"; + private static final String SSN_KEY = "ssn"; + private static final String REPLACE_ME = "replaceMe"; + private static final String REPLACED = "replaced"; + private static final String DO_NOT_REPLACE = "doNotReplace"; + private static final String EMPLOYEE_INFORMATION = "Employee Info"; + private static final String LAST_NAME_VALUE = "Bush"; + private static final String FIRST_NAME_VALUE = "George"; + private static final String SSN_VALUE = "555555555"; + + /** + * Constructor TestWorkbook + * + * @param name + */ + + public TestWorkbook(String name) + { + super(name); + } + + /** + * TEST NAME: Test Write Sheet Simple <P> + * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values.<P> + * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects + * Last row, first row is tested against the correct values (99,0).<P> + * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good. + * HSSFSheet last row or first row is incorrect. <P> + * + * @author Andrew C. Oliver + */ + + public void testWriteSheetSimple() + throws IOException + { + File file = File.createTempFile("testWriteSheetSimple", + ".xls"); + FileOutputStream out = new FileOutputStream(file); + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + HSSFRow r = null; + HSSFCell c = null; + + for (short rownum = ( short ) 0; rownum < 100; rownum++) + { + r = s.createRow(rownum); + + // r.setRowNum(( short ) rownum); + for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2) + { + c = r.createCell(cellnum); + c.setCellValue(rownum * 10000 + cellnum + + ((( double ) rownum / 1000) + + (( double ) cellnum / 10000))); + c = r.createCell(( short ) (cellnum + 1)); + c.setCellValue("TEST"); + } + } + wb.write(out); + out.close(); + assertEquals("FILE LENGTH == 87040", 87040, + file.length()); // changed because of new sheet behavior + assertEquals("LAST ROW == 99", 99, s.getLastRowNum()); + assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum()); + + // assert((s.getLastRowNum() == 99)); + } + + /** + * TEST NAME: Test Write/Modify Sheet Simple <P> + * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values, + * remove some rows, yet still have a valid file/data.<P> + * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects + * Last row, first row is tested against the correct values (74,25).<P> + * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good. + * HSSFSheet last row or first row is incorrect. <P> + * + * @author Andrew C. Oliver + */ + + public void testWriteModifySheetSimple() + throws IOException + { + File file = File.createTempFile("testWriteSheetSimple", + ".xls"); + FileOutputStream out = new FileOutputStream(file); + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + HSSFRow r = null; + HSSFCell c = null; + + for (short rownum = ( short ) 0; rownum < 100; rownum++) + { + r = s.createRow(rownum); + + // r.setRowNum(( short ) rownum); + for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2) + { + c = r.createCell(cellnum); + c.setCellValue(rownum * 10000 + cellnum + + ((( double ) rownum / 1000) + + (( double ) cellnum / 10000))); + c = r.createCell(( short ) (cellnum + 1)); + c.setCellValue("TEST"); + } + } + for (short rownum = ( short ) 0; rownum < 25; rownum++) + { + r = s.getRow(rownum); + s.removeRow(r); + } + for (short rownum = ( short ) 75; rownum < 100; rownum++) + { + r = s.getRow(rownum); + s.removeRow(r); + } + wb.write(out); + out.close(); + + // System.out.println(file.length()); + // assertEquals("FILE LENGTH == 87552",file.length(), 87552); + // System.out.println(s.getLastRowNum()); + assertEquals("FILE LENGTH == 45568", 45568, + file.length()); // changed due to new sheet behavior (<3) + assertEquals("LAST ROW == 74", 74, s.getLastRowNum()); + assertEquals("FIRST ROW == 25", 25, s.getFirstRowNum()); + } + + /** + * TEST NAME: Test Read Simple <P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet (Simple.xls).<P> + * SUCCESS: HSSF reads the sheet. Matches values in their particular positions.<P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF cannot identify values + * in the sheet in their known positions.<P> + * + * @author Greg Merrill + * @author Andrew C. Oliver + */ + + public void testReadSimple() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/Simple.xls"; + FileInputStream stream = new FileInputStream(filename); + POIFSFileSystem fs = new POIFSFileSystem(stream); + HSSFWorkbook workbook = new HSSFWorkbook(fs); + HSSFSheet sheet = workbook.getSheetAt(0); + + assertEquals(REPLACE_ME, + sheet.getRow(( short ) 0).getCell(( short ) 0) + .getStringCellValue()); + stream.close(); + } + + /** + * TEST NAME: Test Read Employee Simple <P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet (Employee.xls).<P> + * SUCCESS: HSSF reads the sheet. Matches values in their particular positions.<P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF cannot identify values + * in the sheet in their known positions.<P> + * + * @author Greg Merrill + * @author Andrew C. Oliver + */ + + public void testReadEmployeeSimple() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/Employee.xls"; + FileInputStream stream = new FileInputStream(filename); + POIFSFileSystem fs = new POIFSFileSystem(stream); + HSSFWorkbook workbook = new HSSFWorkbook(fs); + HSSFSheet sheet = workbook.getSheetAt(0); + + assertEquals(EMPLOYEE_INFORMATION, + sheet.getRow(1).getCell(( short ) 1) + .getStringCellValue()); + assertEquals(LAST_NAME_KEY, + sheet.getRow(3).getCell(( short ) 2) + .getStringCellValue()); + assertEquals(FIRST_NAME_KEY, + sheet.getRow(4).getCell(( short ) 2) + .getStringCellValue()); + assertEquals(SSN_KEY, + sheet.getRow(5).getCell(( short ) 2) + .getStringCellValue()); + stream.close(); + } + + /** + * TEST NAME: Test Modify Sheet Simple <P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet with a string value and replace + * it with another string value.<P> + * SUCCESS: HSSF reads a sheet. HSSF replaces the cell value with another cell value. HSSF + * writes the sheet out to another file. HSSF reads the result and ensures the value + * has been properly replaced. <P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts. + * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value + * is incorrect or has not been replaced. <P> + * + * @author Andrew C. Oliver + * @author Greg Merrill + */ + + public void testModifySimple() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/Simple.xls"; + FileInputStream instream = new FileInputStream(filename); + POIFSFileSystem fsin = new POIFSFileSystem(instream); + HSSFWorkbook workbook = new HSSFWorkbook(fsin); + HSSFSheet sheet = workbook.getSheetAt(0); + HSSFCell cell = + sheet.getRow(( short ) 0).getCell(( short ) 0); + + cell.setCellValue(REPLACED); + File destination = File.createTempFile("SimpleResult", + ".xls"); + FileOutputStream outstream = new FileOutputStream(destination); + + workbook.write(outstream); + instream.close(); + outstream.close(); + instream = new FileInputStream(destination); + workbook = new HSSFWorkbook(new POIFSFileSystem(instream)); + sheet = workbook.getSheetAt(0); + cell = sheet.getRow(( short ) 0).getCell(( short ) 0); + assertEquals(REPLACED, cell.getStringCellValue()); + instream.close(); + } + + /** + * TEST NAME: Test Modify Sheet Simple With Skipped cells<P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet with string values and replace + * them with other string values while not replacing other cells.<P> + * SUCCESS: HSSF reads a sheet. HSSF replaces the cell value with another cell value. HSSF + * writes the sheet out to another file. HSSF reads the result and ensures the value + * has been properly replaced and unreplaced values are still unreplaced. <P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts. + * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value + * is incorrect or has not been replaced or the incorrect cell has its value replaced + * or is incorrect. <P> + * + * @author Andrew C. Oliver + * @author Greg Merrill + */ + + public void testModifySimpleWithSkip() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/SimpleWithSkip.xls"; + FileInputStream instream = new FileInputStream(filename); + POIFSFileSystem fsin = new POIFSFileSystem(instream); + HSSFWorkbook workbook = new HSSFWorkbook(fsin); + HSSFSheet sheet = workbook.getSheetAt(0); + HSSFCell cell = + sheet.getRow(( short ) 0).getCell(( short ) 1); + + cell.setCellValue(REPLACED); + cell = sheet.getRow(( short ) 1).getCell(( short ) 0); + cell.setCellValue(REPLACED); + File destination = + File.createTempFile("SimpleWithSkipResult", ".xls"); + FileOutputStream outstream = new FileOutputStream(destination); + + workbook.write(outstream); + instream.close(); + outstream.close(); + instream = new FileInputStream(destination); + workbook = new HSSFWorkbook(new POIFSFileSystem(instream)); + sheet = workbook.getSheetAt(0); + cell = sheet.getRow(( short ) 0).getCell(( short ) 1); + assertEquals(REPLACED, cell.getStringCellValue()); + cell = sheet.getRow(( short ) 0).getCell(( short ) 0); + assertEquals(DO_NOT_REPLACE, cell.getStringCellValue()); + cell = sheet.getRow(( short ) 1).getCell(( short ) 0); + assertEquals(REPLACED, cell.getStringCellValue()); + cell = sheet.getRow(( short ) 1).getCell(( short ) 1); + assertEquals(DO_NOT_REPLACE, cell.getStringCellValue()); + instream.close(); + } + + /** + * TEST NAME: Test Modify Sheet With Styling<P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet with string values and replace + * them with other string values despite any styling. In this release of HSSF styling will + * probably be lost and is NOT tested.<P> + * SUCCESS: HSSF reads a sheet. HSSF replaces the cell values with other cell values. HSSF + * writes the sheet out to another file. HSSF reads the result and ensures the value + * has been properly replaced. <P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts. + * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value + * is incorrect or has not been replaced. <P> + * + * @author Andrew C. Oliver + * @author Greg Merrill + */ + + public void testModifySimpleWithStyling() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/SimpleWithStyling.xls"; + FileInputStream instream = new FileInputStream(filename); + POIFSFileSystem fsin = new POIFSFileSystem(instream); + HSSFWorkbook workbook = new HSSFWorkbook(fsin); + HSSFSheet sheet = workbook.getSheetAt(0); + + for (int k = 0; k < 4; k++) + { + HSSFCell cell = sheet.getRow(( short ) k).getCell(( short ) 0); + + cell.setCellValue(REPLACED); + } + File destination = + File.createTempFile("SimpleWithStylingResult", ".xls"); + FileOutputStream outstream = new FileOutputStream(destination); + + workbook.write(outstream); + instream.close(); + outstream.close(); + instream = new FileInputStream(destination); + workbook = new HSSFWorkbook(new POIFSFileSystem(instream)); + sheet = workbook.getSheetAt(0); + for (int k = 0; k < 4; k++) + { + HSSFCell cell = sheet.getRow(( short ) k).getCell(( short ) 0); + + assertEquals(REPLACED, cell.getStringCellValue()); + } + instream.close(); + } + + /** + * TEST NAME: Test Modify Employee Sheet<P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet with string values and replace + * them with other string values despite any styling. In this release of HSSF styling will + * probably be lost and is NOT tested.<P> + * SUCCESS: HSSF reads a sheet. HSSF replaces the cell values with other cell values. HSSF + * writes the sheet out to another file. HSSF reads the result and ensures the value + * has been properly replaced. <P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts. + * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value + * is incorrect or has not been replaced. <P> + * + * @author Andrew C. Oliver + * @author Greg Merrill + */ + + public void testModifyEmployee() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/Employee.xls"; + FileInputStream instream = new FileInputStream(filename); + POIFSFileSystem fsin = new POIFSFileSystem(instream); + HSSFWorkbook workbook = new HSSFWorkbook(fsin); + HSSFSheet sheet = workbook.getSheetAt(0); + HSSFCell cell = + sheet.getRow(( short ) 3).getCell(( short ) 2); + + cell.setCellValue(LAST_NAME_VALUE); + cell = sheet.getRow(( short ) 4).getCell(( short ) 2); + cell.setCellValue(FIRST_NAME_VALUE); + cell = sheet.getRow(( short ) 5).getCell(( short ) 2); + cell.setCellValue(SSN_VALUE); + File destination = File.createTempFile("EmployeeResult", + ".xls"); + FileOutputStream outstream = new FileOutputStream(destination); + + workbook.write(outstream); + instream.close(); + outstream.close(); + instream = new FileInputStream(destination); + workbook = new HSSFWorkbook(new POIFSFileSystem(instream)); + sheet = workbook.getSheetAt(0); + assertEquals(EMPLOYEE_INFORMATION, + sheet.getRow(1).getCell(( short ) 1) + .getStringCellValue()); + assertEquals(LAST_NAME_VALUE, + sheet.getRow(3).getCell(( short ) 2) + .getStringCellValue()); + assertEquals(FIRST_NAME_VALUE, + sheet.getRow(4).getCell(( short ) 2) + .getStringCellValue()); + assertEquals(SSN_VALUE, + sheet.getRow(5).getCell(( short ) 2) + .getStringCellValue()); + instream.close(); + } + + /** + * TEST NAME: Test Read Sheet with an RK number<P> + * OBJECTIVE: Test that HSSF can read a simple spreadsheet with and RKRecord and correctly + * identify the cell as numeric and convert it to a NumberRecord. <P> + * SUCCESS: HSSF reads a sheet. HSSF returns that the cell is a numeric type cell. <P> + * FAILURE: HSSF does not read a sheet or excepts. HSSF incorrectly indentifies the cell<P> + * + * @author Siggi Cherem + * @author Andrew C. Oliver (acoliver at apache dot org) + */ + + public void testReadSheetWithRK() + throws IOException + { + String filename = System.getProperty("HSSF.testdata.path"); + + filename = filename + "/rk.xls"; + + // a.xls has a value on position (0,0) + FileInputStream in = new FileInputStream(filename); + POIFSFileSystem fs = new POIFSFileSystem(in); + HSSFWorkbook h = new HSSFWorkbook(fs); + HSSFSheet s = h.getSheetAt(0); + HSSFRow r = s.getRow(0); + HSSFCell c = r.getCell(( short ) 0); + int a = c.getCellType(); + + assertEquals(a, c.CELL_TYPE_NUMERIC); + } + + /** + * TEST NAME: Test Write/Modify Sheet Simple <P> + * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values, + * remove some rows, yet still have a valid file/data.<P> + * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects + * Last row, first row is tested against the correct values (74,25).<P> + * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good. + * HSSFSheet last row or first row is incorrect. <P> + * + * @author Andrew C. Oliver + */ + + public void testWriteModifySheetMerged() + throws IOException + { + File file = File.createTempFile("testWriteSheetMerged", + ".xls"); + FileOutputStream out = new FileOutputStream(file); + FileInputStream in = null; + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + HSSFRow r = null; + HSSFCell c = null; + + for (short rownum = ( short ) 0; rownum < 100; rownum++) + { + r = s.createRow(rownum); + + // r.setRowNum(( short ) rownum); + for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2) + { + c = r.createCell(cellnum); + c.setCellValue(rownum * 10000 + cellnum + + ((( double ) rownum / 1000) + + (( double ) cellnum / 10000))); + c = r.createCell(( short ) (cellnum + 1)); + c.setCellValue("TEST"); + } + } + s.addMergedRegion(new Region(( short ) 0, ( short ) 0, ( short ) 10, + ( short ) 10)); + s.addMergedRegion(new Region(( short ) 30, ( short ) 5, ( short ) 40, + ( short ) 15)); + wb.write(out); + out.close(); + in = new FileInputStream(file); + wb = new HSSFWorkbook(new POIFSFileSystem(in)); + s = wb.getSheetAt(0); + Region r1 = s.getMergedRegionAt(0); + Region r2 = s.getMergedRegionAt(1); + + in.close(); + + // System.out.println(file.length()); + // assertEquals("FILE LENGTH == 87552",file.length(), 87552); + // System.out.println(s.getLastRowNum()); + assertEquals("REGION1 = 0,0,10,10", 0, + new Region(( short ) 0, ( short ) 0, ( short ) 10, + ( short ) 10).compareTo(r1)); + assertEquals("REGION2 == 30,5,40,15", 0, + new Region(( short ) 30, ( short ) 5, ( short ) 40, + ( short ) 15).compareTo(r2)); + } + + /** + * Test the backup field gets set as expected. + */ + + public void testBackupRecord() + throws Exception + { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet(); + Workbook workbook = wb.getWorkbook(); + BackupRecord record = workbook.getBackupRecord(); + + assertEquals(0, record.getBackup()); + wb.setBackupFlag(true); + assertEquals(1, record.getBackup()); + } + + /** + * This tests is for bug [ #506658 ] Repeating output. + * + * We need to make sure only one LabelSSTRecord is produced. + */ + + public void testRepeatingBug() + throws Exception + { + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet("Design Variants"); + HSSFRow row = sheet.createRow(( short ) 2); + HSSFCell cell = row.createCell(( short ) 1); + + cell.setCellValue("Class"); + cell = row.createCell(( short ) 2); + + // workbook.write(new FileOutputStream("/a2.xls")); + ValueRecordsAggregate valueAggregate = + ( ValueRecordsAggregate ) sheet.getSheet() + .findFirstRecordBySid(ValueRecordsAggregate.sid); + int sstRecords = 0; + Iterator iterator = valueAggregate.getIterator(); + + while (iterator.hasNext()) + { + if ((( Record ) iterator.next()).getSid() == LabelSSTRecord.sid) + { + sstRecords++; + } + } + assertEquals(1, sstRecords); + } + + public static void main(String [] ignored_args) + { + String filename = System.getProperty("HSSF.testdata.path"); + + // assume andy is running this in the debugger + if (filename == null) + { + System.setProperty( + "HSSF.testdata.path", + "/home/andy/npoi3/poi/production/testcases/net/sourceforge/poi/hssf/data"); + } + System.out + .println("Testing org.apache.poi.hssf.usermodel.HSSFWorkbook"); + junit.textui.TestRunner.run(TestWorkbook.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java b/src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java new file mode 100644 index 0000000000..9a5899456e --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java @@ -0,0 +1,80 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.eventfilesystem; + +/** + * Class Listener + * + * @author Marc Johnson (mjohnson at apache dot org) + * @version %I%, %G% + */ + +class Listener + implements POIFSReaderListener +{ + + /** + * Process a POIFSReaderEvent that this listener had registered + * for + * + * @param event the POIFSReaderEvent + */ + + public void processPOIFSReaderEvent(POIFSReaderEvent event) + { + } +} // end class Listener + diff --git a/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java b/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java new file mode 100644 index 0000000000..ea67a5d327 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java @@ -0,0 +1,224 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.eventfilesystem; + +import junit.framework.*; + +import java.util.*; + +import org.apache.poi.poifs.filesystem.POIFSDocumentPath; + +/** + * Class to test POIFSReaderRegistry functionality + * + * @author Marc Johnson + */ + +public class TestPOIFSReaderRegistry + extends TestCase +{ + private POIFSReaderListener[] listeners = + { + new Listener(), new Listener(), new Listener(), new Listener() + }; + private POIFSDocumentPath[] paths = + { + new POIFSDocumentPath(), new POIFSDocumentPath(new String[] + { + "a" + }), new POIFSDocumentPath(new String[] + { + "b" + }), new POIFSDocumentPath(new String[] + { + "c" + }) + }; + private String[] names = + { + "a0", "a1", "a2", "a3" + }; + + /** + * Constructor TestPOIFSReaderRegistry + * + * @param name + */ + + public TestPOIFSReaderRegistry(String name) + { + super(name); + } + + /** + * Test empty registry + */ + + public void testEmptyRegistry() + { + POIFSReaderRegistry registry = new POIFSReaderRegistry(); + + for (int j = 0; j < paths.length; j++) + { + for (int k = 0; k < names.length; k++) + { + Iterator listeners = registry.getListeners(paths[ j ], + names[ k ]); + + assertTrue(!listeners.hasNext()); + } + } + } + + /** + * Test mixed registration operations + */ + + public void testMixedRegistrationOperations() + { + POIFSReaderRegistry registry = new POIFSReaderRegistry(); + + for (int j = 0; j < listeners.length; j++) + { + for (int k = 0; k < paths.length; k++) + { + for (int n = 0; n < names.length; n++) + { + if ((j != k) && (k != n)) + { + registry.registerListener(listeners[ j ], paths[ k ], + names[ n ]); + } + } + } + } + for (int k = 0; k < paths.length; k++) + { + for (int n = 0; n < names.length; n++) + { + Iterator listeners = registry.getListeners(paths[ k ], + names[ n ]); + + if (k == n) + { + assertTrue(!listeners.hasNext()); + } + else + { + Set registeredListeners = new HashSet(); + + while (listeners.hasNext()) + { + registeredListeners.add(listeners.next()); + } + assertEquals(this.listeners.length - 1, + registeredListeners.size()); + for (int j = 0; j < this.listeners.length; j++) + { + if (j == k) + { + assertTrue(!registeredListeners + .contains(this.listeners[ j ])); + } + else + { + assertTrue(registeredListeners + .contains(this.listeners[ j ])); + } + } + } + } + } + for (int j = 0; j < listeners.length; j++) + { + registry.registerListener(listeners[ j ]); + } + for (int k = 0; k < paths.length; k++) + { + for (int n = 0; n < names.length; n++) + { + Iterator listeners = + registry.getListeners(paths[ k ], names[ n ]); + Set registeredListeners = new HashSet(); + + while (listeners.hasNext()) + { + registeredListeners.add(listeners.next()); + } + assertEquals(this.listeners.length, + registeredListeners.size()); + for (int j = 0; j < this.listeners.length; j++) + { + assertTrue(registeredListeners + .contains(this.listeners[ j ])); + } + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.eventfilesystem.POIFSReaderRegistry"); + junit.textui.TestRunner.run(TestPOIFSReaderRegistry.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java b/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java new file mode 100644 index 0000000000..0ed493d64f --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java @@ -0,0 +1,224 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import java.util.*; + +import java.io.*; + +import org.apache.poi.poifs.eventfilesystem.POIFSReader; +import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent; +import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener; + +/** + * Test (Proof of concept) program that employs the + * POIFSReaderListener and POIFSWriterListener interfaces + * + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class ReaderWriter + implements POIFSReaderListener, POIFSWriterListener +{ + private POIFSFileSystem filesystem; + private DirectoryEntry root; + + // keys are DocumentDescriptors, values are byte[]s + private Map dataMap; + + /** + * Constructor ReaderWriter + * + * + * @param filesystem + * + */ + + ReaderWriter(final POIFSFileSystem filesystem) + { + this.filesystem = filesystem; + root = this.filesystem.getRoot(); + dataMap = new HashMap(); + } + + /** + * Method main + * + * + * @param args + * + * @exception IOException + * + */ + + public static void main(String [] args) + throws IOException + { + if (args.length != 2) + { + System.err.println( + "two arguments required: one input file name and one output file name"); + } + else + { + POIFSReader reader = new POIFSReader(); + POIFSFileSystem filesystem = new POIFSFileSystem(); + + reader.registerListener(new ReaderWriter(filesystem)); + FileInputStream istream = new FileInputStream(args[ 0 ]); + + reader.read(istream); + istream.close(); + FileOutputStream ostream = new FileOutputStream(args[ 1 ]); + + filesystem.writeFilesystem(ostream); + ostream.close(); + } + } + + /* ********** START implementation of POIFSReaderListener ********** */ + + /** + * Process a POIFSReaderEvent that this listener had registered + * for + * + * @param event the POIFSReaderEvent + */ + + public void processPOIFSReaderEvent(final POIFSReaderEvent event) + { + DocumentInputStream istream = event.getStream(); + POIFSDocumentPath path = event.getPath(); + String name = event.getName(); + + try + { + int size = istream.available(); + byte[] data = new byte[ istream.available() ]; + + istream.read(data); + DocumentDescriptor descriptor = new DocumentDescriptor(path, + name); + + System.out.println("adding document: " + descriptor + " (" + size + + " bytes)"); + dataMap.put(descriptor, data); + int pathLength = path.length(); + DirectoryEntry entry = root; + + for (int k = 0; k < path.length(); k++) + { + String componentName = path.getComponent(k); + Entry nextEntry = null; + + try + { + nextEntry = entry.getEntry(componentName); + } + catch (FileNotFoundException ignored) + { + try + { + nextEntry = entry.createDirectory(componentName); + } + catch (IOException e) + { + System.out.println("Unable to create directory"); + e.printStackTrace(); + System.exit(1); + } + } + entry = ( DirectoryEntry ) nextEntry; + } + entry.createDocument(name, size, this); + } + catch (IOException ignored) + { + } + } + + /* ********** END implementation of POIFSReaderListener ********** */ + /* ********** START implementation of POIFSWriterListener ********** */ + + /** + * Process a POIFSWriterEvent that this listener had registered + * for + * + * @param event the POIFSWriterEvent + */ + + public void processPOIFSWriterEvent(final POIFSWriterEvent event) + { + try + { + DocumentDescriptor descriptor = + new DocumentDescriptor(event.getPath(), event.getName()); + + System.out.println("looking up document: " + descriptor + " (" + + event.getLimit() + " bytes)"); + event.getStream().write(( byte [] ) dataMap.get(descriptor)); + } + catch (IOException e) + { + System.out.println("Unable to write document"); + e.printStackTrace(); + System.exit(1); + } + } + + /* ********** END implementation of POIFSWriterListener ********** */ +} // end public class ReaderWriter + diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java new file mode 100644 index 0000000000..289bf8c04b --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java @@ -0,0 +1,289 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.DirectoryProperty; +import org.apache.poi.poifs.property.DocumentProperty; + +/** + * Class to test DirectoryNode functionality + * + * @author Marc Johnson + */ + +public class TestDirectoryNode + extends TestCase +{ + + /** + * Constructor TestDirectoryNode + * + * @param name + */ + + public TestDirectoryNode(String name) + { + super(name); + } + + /** + * test trivial constructor (a DirectoryNode with no children) + * + * @exception IOException + */ + + public void testEmptyConstructor() + throws IOException + { + POIFSFileSystem fs = new POIFSFileSystem(); + DirectoryProperty property1 = new DirectoryProperty("parent"); + DirectoryProperty property2 = new DirectoryProperty("child"); + DirectoryNode parent = new DirectoryNode(property1, fs, null); + DirectoryNode node = new DirectoryNode(property2, fs, + parent); + + assertEquals(0, parent.getPath().length()); + assertEquals(1, node.getPath().length()); + assertEquals("child", node.getPath().getComponent(0)); + + // verify that getEntries behaves correctly + int count = 0; + Iterator iter = node.getEntries(); + + while (iter.hasNext()) + { + count++; + iter.next(); + } + assertEquals(0, count); + + // verify behavior of isEmpty + assertTrue(node.isEmpty()); + + // verify behavior of getEntryCount + assertEquals(0, node.getEntryCount()); + + // verify behavior of getEntry + try + { + node.getEntry("foo"); + fail("should have caught FileNotFoundException"); + } + catch (FileNotFoundException ignored) + { + + // as expected + } + + // verify behavior of isDirectoryEntry + assertTrue(node.isDirectoryEntry()); + + // verify behavior of getName + assertEquals(property2.getName(), node.getName()); + + // verify behavior of isDocumentEntry + assertTrue(!node.isDocumentEntry()); + + // verify behavior of getParent + assertEquals(parent, node.getParent()); + } + + /** + * test non-trivial constructor (a DirectoryNode with children) + * + * @exception IOException + */ + + public void testNonEmptyConstructor() + throws IOException + { + DirectoryProperty property1 = new DirectoryProperty("parent"); + DirectoryProperty property2 = new DirectoryProperty("child1"); + + property1.addChild(property2); + property1.addChild(new DocumentProperty("child2", 2000)); + property2.addChild(new DocumentProperty("child3", 30000)); + DirectoryNode node = new DirectoryNode(property1, + new POIFSFileSystem(), null); + + // verify that getEntries behaves correctly + int count = 0; + Iterator iter = node.getEntries(); + + while (iter.hasNext()) + { + count++; + iter.next(); + } + assertEquals(2, count); + + // verify behavior of isEmpty + assertTrue(!node.isEmpty()); + + // verify behavior of getEntryCount + assertEquals(2, node.getEntryCount()); + + // verify behavior of getEntry + DirectoryNode child1 = ( DirectoryNode ) node.getEntry("child1"); + + child1.getEntry("child3"); + node.getEntry("child2"); + try + { + node.getEntry("child3"); + fail("should have caught FileNotFoundException"); + } + catch (FileNotFoundException ignored) + { + + // as expected + } + + // verify behavior of isDirectoryEntry + assertTrue(node.isDirectoryEntry()); + + // verify behavior of getName + assertEquals(property1.getName(), node.getName()); + + // verify behavior of isDocumentEntry + assertTrue(!node.isDocumentEntry()); + + // verify behavior of getParent + assertNull(node.getParent()); + } + + /** + * test deletion methods + * + * @exception IOException + */ + + public void testDeletion() + throws IOException + { + POIFSFileSystem fs = new POIFSFileSystem(); + DirectoryEntry root = fs.getRoot(); + + // verify cannot delete the root directory + assertTrue(!root.delete()); + DirectoryEntry dir = fs.createDirectory("myDir"); + + assertTrue(!root.isEmpty()); + + // verify can delete empty directory + assertTrue(dir.delete()); + dir = fs.createDirectory("NextDir"); + DocumentEntry doc = + dir.createDocument("foo", + new ByteArrayInputStream(new byte[ 1 ])); + + assertTrue(!dir.isEmpty()); + + // verify cannot delete empty directory + assertTrue(!dir.delete()); + assertTrue(doc.delete()); + + // verify now we can delete it + assertTrue(dir.delete()); + assertTrue(root.isEmpty()); + } + + /** + * test change name methods + * + * @exception IOException + */ + + public void testRename() + throws IOException + { + POIFSFileSystem fs = new POIFSFileSystem(); + DirectoryEntry root = fs.getRoot(); + + // verify cannot rename the root directory + assertTrue(!root.renameTo("foo")); + DirectoryEntry dir = fs.createDirectory("myDir"); + + assertTrue(dir.renameTo("foo")); + assertEquals("foo", dir.getName()); + DirectoryEntry dir2 = fs.createDirectory("myDir"); + + assertTrue(!dir2.renameTo("foo")); + assertEquals("myDir", dir2.getName()); + assertTrue(dir.renameTo("FirstDir")); + assertTrue(dir2.renameTo("foo")); + assertEquals("foo", dir2.getName()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.filesystem.DirectoryNode"); + junit.textui.TestRunner.run(TestDirectoryNode.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java new file mode 100644 index 0000000000..522b3ed7e0 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java @@ -0,0 +1,319 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; +import org.apache.poi.poifs.property.DocumentProperty; +import org.apache.poi.poifs.storage.RawDataBlock; +import org.apache.poi.poifs.storage.SmallDocumentBlock; + +/** + * Class to test POIFSDocument functionality + * + * @author Marc Johnson + */ + +public class TestDocument + extends TestCase +{ + + /** + * Constructor TestDocument + * + * @param name + */ + + public TestDocument(String name) + { + super(name); + } + + /** + * Integration test -- really about all we can do + * + * @exception IOException + */ + + public void testPOIFSDocument() + throws IOException + { + + // verify correct number of blocks get created for document + // that is exact multituple of block size + POIFSDocument document; + byte[] array = new byte[ 4096 ]; + + for (int j = 0; j < array.length; j++) + { + array[ j ] = ( byte ) j; + } + document = new POIFSDocument("foo", new ByteArrayInputStream(array)); + checkDocument(document, array); + + // verify correct number of blocks get created for document + // that is not an exact multiple of block size + array = new byte[ 4097 ]; + for (int j = 0; j < array.length; j++) + { + array[ j ] = ( byte ) j; + } + document = new POIFSDocument("bar", new ByteArrayInputStream(array)); + checkDocument(document, array); + + // verify correct number of blocks get created for document + // that is small + array = new byte[ 4095 ]; + for (int j = 0; j < array.length; j++) + { + array[ j ] = ( byte ) j; + } + document = new POIFSDocument("_bar", new ByteArrayInputStream(array)); + checkDocument(document, array); + + // verify correct number of blocks get created for document + // that is rather small + array = new byte[ 199 ]; + for (int j = 0; j < array.length; j++) + { + array[ j ] = ( byte ) j; + } + document = new POIFSDocument("_bar2", + new ByteArrayInputStream(array)); + checkDocument(document, array); + + // verify that output is correct + array = new byte[ 4097 ]; + for (int j = 0; j < array.length; j++) + { + array[ j ] = ( byte ) j; + } + document = new POIFSDocument("foobar", + new ByteArrayInputStream(array)); + checkDocument(document, array); + document.setStartBlock(0x12345678); // what a big file!! + DocumentProperty property = document.getDocumentProperty(); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + property.writeData(stream); + byte[] output = stream.toByteArray(); + byte[] array2 = + { + ( byte ) 'f', ( byte ) 0, ( byte ) 'o', ( byte ) 0, ( byte ) 'o', + ( byte ) 0, ( byte ) 'b', ( byte ) 0, ( byte ) 'a', ( byte ) 0, + ( byte ) 'r', ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 14, + ( byte ) 0, ( byte ) 2, ( byte ) 1, ( byte ) -1, ( byte ) -1, + ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, + ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0x78, ( byte ) 0x56, ( byte ) 0x34, + ( byte ) 0x12, ( byte ) 1, ( byte ) 16, ( byte ) 0, ( byte ) 0, + ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0 + }; + + assertEquals(array2.length, output.length); + for (int j = 0; j < output.length; j++) + { + assertEquals("Checking property offset " + j, array2[ j ], + output[ j ]); + } + } + + private POIFSDocument makeCopy(POIFSDocument document, byte [] input, + byte [] data) + throws IOException + { + POIFSDocument copy = null; + + if (input.length >= 4096) + { + RawDataBlock[] blocks = + new RawDataBlock[ (input.length + 511) / 512 ]; + ByteArrayInputStream stream = new ByteArrayInputStream(data); + int index = 0; + + while (true) + { + RawDataBlock block = new RawDataBlock(stream); + + if (block.eof()) + { + break; + } + blocks[ index++ ] = block; + } + copy = new POIFSDocument("test" + input.length, blocks, + input.length); + } + else + { + copy = new POIFSDocument( + "test" + input.length, + ( SmallDocumentBlock [] ) document.getSmallBlocks(), + input.length); + } + return copy; + } + + private void checkDocument(final POIFSDocument document, + final byte [] input) + throws IOException + { + int big_blocks = 0; + int small_blocks = 0; + int total_output = 0; + + if (input.length >= 4096) + { + big_blocks = (input.length + 511) / 512; + total_output = big_blocks * 512; + } + else + { + small_blocks = (input.length + 63) / 64; + total_output = 0; + } + checkValues( + big_blocks, small_blocks, total_output, + makeCopy( + document, input, + checkValues( + big_blocks, small_blocks, total_output, document, + input)), input); + } + + private byte [] checkValues(int big_blocks, int small_blocks, + int total_output, POIFSDocument document, + byte [] input) + throws IOException + { + assertEquals(document, document.getDocumentProperty().getDocument()); + int increment = ( int ) Math.sqrt(input.length); + + for (int j = 1; j <= input.length; j += increment) + { + byte[] buffer = new byte[ j ]; + int offset = 0; + + for (int k = 0; k < (input.length / j); k++) + { + document.read(buffer, offset); + for (int n = 0; n < buffer.length; n++) + { + assertEquals("checking byte " + (k * j) + n, + input[ (k * j) + n ], buffer[ n ]); + } + offset += j; + } + } + assertEquals(big_blocks, document.countBlocks()); + assertEquals(small_blocks, document.getSmallBlocks().length); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + document.writeBlocks(stream); + byte[] output = stream.toByteArray(); + + assertEquals(total_output, output.length); + int limit = Math.min(total_output, input.length); + + for (int j = 0; j < limit; j++) + { + assertEquals("Checking document offset " + j, input[ j ], + output[ j ]); + } + for (int j = limit; j < output.length; j++) + { + assertEquals("Checking document offset " + j, ( byte ) -1, + output[ j ]); + } + return output; + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.filesystem.POIFSDocument"); + junit.textui.TestRunner.run(TestDocument.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java new file mode 100644 index 0000000000..3dbcb1be1e --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java @@ -0,0 +1,248 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import junit.framework.*; + +/** + * Class to test DocumentDescriptor functionality + * + * @author Marc Johnson + */ + +public class TestDocumentDescriptor + extends TestCase +{ + + /** + * Constructor TestDocumentDescriptor + * + * @param name + */ + + public TestDocumentDescriptor(String name) + { + super(name); + } + + /** + * test equality + */ + + public void testEquality() + { + String[] names = + { + "c1", "c2", "c3", "c4", "c5" + }; + POIFSDocumentPath a1 = new POIFSDocumentPath(); + POIFSDocumentPath a2 = new POIFSDocumentPath(null); + POIFSDocumentPath a3 = new POIFSDocumentPath(new String[ 0 ]); + POIFSDocumentPath a4 = new POIFSDocumentPath(a1, null); + POIFSDocumentPath a5 = new POIFSDocumentPath(a1, + new String[ 0 ]); + POIFSDocumentPath[] paths = + { + a1, a2, a3, a4, a5 + }; + + for (int j = 0; j < paths.length; j++) + { + for (int k = 0; k < paths.length; k++) + { + for (int m = 0; m < names.length; m++) + { + DocumentDescriptor d1 = new DocumentDescriptor(paths[ j ], + names[ m ]); + + for (int n = 0; n < names.length; n++) + { + DocumentDescriptor d2 = + new DocumentDescriptor(paths[ k ], names[ n ]); + + if (m == n) + { + assertEquals("" + j + "," + k + "," + m + "," + + n, d1, d2); + } + else + { + assertTrue("" + j + "," + k + "," + m + "," + n, + !d1.equals(d2)); + } + } + } + } + } + a2 = new POIFSDocumentPath(a1, new String[] + { + "foo" + }); + a3 = new POIFSDocumentPath(a2, new String[] + { + "bar" + }); + a4 = new POIFSDocumentPath(a3, new String[] + { + "fubar" + }); + a5 = new POIFSDocumentPath(a4, new String[] + { + "foobar" + }); + POIFSDocumentPath[] builtUpPaths = + { + a1, a2, a3, a4, a5 + }; + POIFSDocumentPath[] fullPaths = + { + new POIFSDocumentPath(), new POIFSDocumentPath(new String[] + { + "foo" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "fubar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "fubar", "foobar" + }) + }; + + for (int k = 0; k < builtUpPaths.length; k++) + { + for (int j = 0; j < fullPaths.length; j++) + { + for (int m = 0; m < names.length; m++) + { + DocumentDescriptor d1 = + new DocumentDescriptor(fullPaths[ j ], names[ m ]); + + for (int n = 0; n < names.length; n++) + { + DocumentDescriptor d2 = + new DocumentDescriptor(builtUpPaths[ k ], + names[ n ]); + + if ((k == j) && (m == n)) + { + assertEquals("" + j + "," + k + "," + m + "," + + n, d1, d2); + } + else + { + assertTrue("" + j + "," + k + "," + m + "," + n, + !(d1.equals(d2))); + } + } + } + } + } + POIFSDocumentPath[] badPaths = + { + new POIFSDocumentPath(new String[] + { + "_foo" + }), new POIFSDocumentPath(new String[] + { + "foo", "_bar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "_fubar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "fubar", "_foobar" + }) + }; + + for (int k = 0; k < builtUpPaths.length; k++) + { + for (int j = 0; j < badPaths.length; j++) + { + for (int m = 0; m < names.length; m++) + { + DocumentDescriptor d1 = + new DocumentDescriptor(badPaths[ j ], names[ m ]); + + for (int n = 0; n < names.length; n++) + { + DocumentDescriptor d2 = + new DocumentDescriptor(builtUpPaths[ k ], + names[ n ]); + + assertTrue("" + j + "," + k + "," + m + "," + n, + !(d1.equals(d2))); + } + } + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.eventfilesystem.DocumentDescriptor"); + junit.textui.TestRunner.run(TestDocumentDescriptor.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java new file mode 100644 index 0000000000..e77fee566a --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java @@ -0,0 +1,472 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.DirectoryProperty; +import org.apache.poi.poifs.property.DocumentProperty; +import org.apache.poi.poifs.storage.RawDataBlock; + +/** + * Class to test DocumentInputStream functionality + * + * @author Marc Johnson + */ + +public class TestDocumentInputStream + extends TestCase +{ + + /** + * Constructor TestDocumentInputStream + * + * @param name + * + * @exception IOException + */ + + public TestDocumentInputStream(String name) + throws IOException + { + super(name); + int blocks = (_workbook_size + 511) / 512; + + _workbook_data = new byte[ 512 * blocks ]; + Arrays.fill(_workbook_data, ( byte ) -1); + for (int j = 0; j < _workbook_size; j++) + { + _workbook_data[ j ] = ( byte ) (j * j); + } + RawDataBlock[] rawBlocks = new RawDataBlock[ blocks ]; + ByteArrayInputStream stream = + new ByteArrayInputStream(_workbook_data); + + for (int j = 0; j < blocks; j++) + { + rawBlocks[ j ] = new RawDataBlock(stream); + } + POIFSDocument document = new POIFSDocument("Workbook", rawBlocks, + _workbook_size); + + _workbook = new DocumentNode( + document.getDocumentProperty(), + new DirectoryNode( + new DirectoryProperty("Root Entry"), null, null)); + } + + private DocumentNode _workbook; + private byte[] _workbook_data; + private static final int _workbook_size = 5000; + + // non-even division of _workbook_size, also non-even division of + // any block size + private static final int _buffer_size = 6; + + /** + * test constructor + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + + assertEquals(_workbook_size, stream.available()); + } + + /** + * test available() behavior + * + * @exception IOException + */ + + public void testAvailable() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + + assertEquals(_workbook_size, stream.available()); + stream.close(); + try + { + stream.available(); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + } + + /** + * test mark/reset/markSupported. + * + * @exception IOException + */ + + public void testMarkFunctions() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + byte[] buffer = new byte[ _workbook_size / 5 ]; + + stream.read(buffer); + for (int j = 0; j < buffer.length; j++) + { + assertEquals("checking byte " + j, _workbook_data[ j ], + buffer[ j ]); + } + assertEquals(_workbook_size - buffer.length, stream.available()); + stream.reset(); + assertEquals(_workbook_size, stream.available()); + stream.read(buffer); + stream.mark(12); + stream.read(buffer); + assertEquals(_workbook_size - (2 * buffer.length), + stream.available()); + for (int j = buffer.length; j < (2 * buffer.length); j++) + { + assertEquals("checking byte " + j, _workbook_data[ j ], + buffer[ j - buffer.length ]); + } + stream.reset(); + assertEquals(_workbook_size - buffer.length, stream.available()); + stream.read(buffer); + assertEquals(_workbook_size - (2 * buffer.length), + stream.available()); + for (int j = buffer.length; j < (2 * buffer.length); j++) + { + assertEquals("checking byte " + j, _workbook_data[ j ], + buffer[ j - buffer.length ]); + } + assertTrue(stream.markSupported()); + } + + /** + * test simple read method + * + * @exception IOException + */ + + public void testReadSingleByte() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + int remaining = _workbook_size; + + for (int j = 0; j < _workbook_size; j++) + { + assertEquals("validating byte " + j, _workbook_data[ j ], + ( byte ) stream.read()); + remaining--; + assertEquals("checking remaining after reading byte " + j, + remaining, stream.available()); + } + assertEquals(-1, stream.read()); + stream.close(); + try + { + stream.read(); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + } + + /** + * Test buffered read + * + * @exception IOException + */ + + public void testBufferRead() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + + try + { + stream.read(null); + fail("Should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + + // as expected + } + + // test reading zero length buffer + assertEquals(0, stream.read(new byte[ 0 ])); + assertEquals(_workbook_size, stream.available()); + byte[] buffer = new byte[ _buffer_size ]; + int offset = 0; + + while (stream.available() >= buffer.length) + { + assertEquals(_buffer_size, stream.read(buffer)); + for (int j = 0; j < buffer.length; j++) + { + assertEquals("in main loop, byte " + offset, + _workbook_data[ offset ], buffer[ j ]); + offset++; + } + assertEquals("offset " + offset, _workbook_size - offset, + stream.available()); + } + assertEquals(_workbook_size % _buffer_size, stream.available()); + Arrays.fill(buffer, ( byte ) 0); + int count = stream.read(buffer); + + assertEquals(_workbook_size % _buffer_size, count); + for (int j = 0; j < count; j++) + { + assertEquals("past main loop, byte " + offset, + _workbook_data[ offset ], buffer[ j ]); + offset++; + } + assertEquals(_workbook_size, offset); + for (int j = count; j < buffer.length; j++) + { + assertEquals("checking remainder, byte " + j, 0, buffer[ j ]); + } + assertEquals(-1, stream.read(buffer)); + stream.close(); + try + { + stream.read(buffer); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + } + + /** + * Test complex buffered read + * + * @exception IOException + */ + + public void testComplexBufferRead() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + + try + { + stream.read(null, 0, 1); + fail("Should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + + // as expected + } + + // test illegal offsets and lengths + try + { + stream.read(new byte[ 5 ], -4, 0); + fail("Should have caught IndexOutOfBoundsException"); + } + catch (IndexOutOfBoundsException ignored) + { + + // as expected + } + try + { + stream.read(new byte[ 5 ], 0, -4); + fail("Should have caught IndexOutOfBoundsException"); + } + catch (IndexOutOfBoundsException ignored) + { + + // as expected + } + try + { + stream.read(new byte[ 5 ], 0, 6); + fail("Should have caught IndexOutOfBoundsException"); + } + catch (IndexOutOfBoundsException ignored) + { + + // as expected + } + + // test reading zero + assertEquals(0, stream.read(new byte[ 5 ], 0, 0)); + assertEquals(_workbook_size, stream.available()); + byte[] buffer = new byte[ _workbook_size ]; + int offset = 0; + + while (stream.available() >= _buffer_size) + { + Arrays.fill(buffer, ( byte ) 0); + assertEquals(_buffer_size, + stream.read(buffer, offset, _buffer_size)); + for (int j = 0; j < offset; j++) + { + assertEquals("checking byte " + j, 0, buffer[ j ]); + } + for (int j = offset; j < (offset + _buffer_size); j++) + { + assertEquals("checking byte " + j, _workbook_data[ j ], + buffer[ j ]); + } + for (int j = offset + _buffer_size; j < buffer.length; j++) + { + assertEquals("checking byte " + j, 0, buffer[ j ]); + } + offset += _buffer_size; + assertEquals("offset " + offset, _workbook_size - offset, + stream.available()); + } + assertEquals(_workbook_size % _buffer_size, stream.available()); + Arrays.fill(buffer, ( byte ) 0); + int count = stream.read(buffer, offset, + _workbook_size % _buffer_size); + + assertEquals(_workbook_size % _buffer_size, count); + for (int j = 0; j < offset; j++) + { + assertEquals("checking byte " + j, 0, buffer[ j ]); + } + for (int j = offset; j < buffer.length; j++) + { + assertEquals("checking byte " + j, _workbook_data[ j ], + buffer[ j ]); + } + assertEquals(_workbook_size, offset + count); + for (int j = count; j < offset; j++) + { + assertEquals("byte " + j, 0, buffer[ j ]); + } + assertEquals(-1, stream.read(buffer, 0, 1)); + stream.close(); + try + { + stream.read(buffer, 0, 1); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + } + + /** + * test skip + * + * @exception IOException + */ + + public void testSkip() + throws IOException + { + DocumentInputStream stream = new DocumentInputStream(_workbook); + + assertEquals(_workbook_size, stream.available()); + int count = stream.available(); + + while (stream.available() >= _buffer_size) + { + assertEquals(_buffer_size, stream.skip(_buffer_size)); + count -= _buffer_size; + assertEquals(count, stream.available()); + } + assertEquals(_workbook_size % _buffer_size, + stream.skip(_buffer_size)); + assertEquals(0, stream.available()); + stream.reset(); + assertEquals(_workbook_size, stream.available()); + assertEquals(_workbook_size, stream.skip(_workbook_size * 2)); + assertEquals(0, stream.available()); + stream.reset(); + assertEquals(_workbook_size, stream.available()); + assertEquals(_workbook_size, + stream.skip(2 + ( long ) Integer.MAX_VALUE)); + assertEquals(0, stream.available()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.filesystem.DocumentInputStream"); + junit.textui.TestRunner.run(TestDocumentInputStream.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java new file mode 100644 index 0000000000..7a63ad7c69 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java @@ -0,0 +1,142 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import java.io.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.DirectoryProperty; +import org.apache.poi.poifs.property.DocumentProperty; +import org.apache.poi.poifs.storage.RawDataBlock; + +/** + * Class to test DocumentNode functionality + * + * @author Marc Johnson + */ + +public class TestDocumentNode + extends TestCase +{ + + /** + * Constructor TestDocumentNode + * + * @param name + */ + + public TestDocumentNode(String name) + { + super(name); + } + + /** + * test constructor + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + DirectoryProperty property1 = new DirectoryProperty("directory"); + RawDataBlock[] rawBlocks = new RawDataBlock[ 4 ]; + ByteArrayInputStream stream = + new ByteArrayInputStream(new byte[ 2048 ]); + + for (int j = 0; j < 4; j++) + { + rawBlocks[ j ] = new RawDataBlock(stream); + } + POIFSDocument document = new POIFSDocument("document", rawBlocks, + 2000); + DocumentProperty property2 = document.getDocumentProperty(); + DirectoryNode parent = new DirectoryNode(property1, null, null); + DocumentNode node = new DocumentNode(property2, parent); + + // verify we can retrieve the document + assertEquals(property2.getDocument(), node.getDocument()); + + // verify we can get the size + assertEquals(property2.getSize(), node.getSize()); + + // verify isDocumentEntry returns true + assertTrue(node.isDocumentEntry()); + + // verify isDirectoryEntry returns false + assertTrue(!node.isDirectoryEntry()); + + // verify getName behaves correctly + assertEquals(property2.getName(), node.getName()); + + // verify getParent behaves correctly + assertEquals(parent, node.getParent()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.filesystem.DocumentNode"); + junit.textui.TestRunner.run(TestDocumentNode.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java new file mode 100644 index 0000000000..de0d241919 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java @@ -0,0 +1,257 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.DirectoryProperty; +import org.apache.poi.poifs.property.DocumentProperty; +import org.apache.poi.poifs.storage.RawDataBlock; + +/** + * Class to test DocumentOutputStream functionality + * + * @author Marc Johnson + */ + +public class TestDocumentOutputStream + extends TestCase +{ + + /** + * Constructor TestDocumentOutputStream + * + * @param name + * + * @exception IOException + */ + + public TestDocumentOutputStream(String name) + throws IOException + { + super(name); + } + + /** + * test write(int) behavior + * + * @exception IOException + */ + + public void testWrite1() + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DocumentOutputStream dstream = new DocumentOutputStream(stream, 25); + + for (int j = 0; j < 25; j++) + { + dstream.write(j); + } + try + { + dstream.write(0); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + } + byte[] output = stream.toByteArray(); + + assertEquals(25, output.length); + for (int j = 0; j < 25; j++) + { + assertEquals(( byte ) j, output[ j ]); + } + stream.close(); + } + + /** + * test write(byte[]) behavior + * + * @exception IOException + */ + + public void testWrite2() + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DocumentOutputStream dstream = new DocumentOutputStream(stream, 25); + + for (int j = 0; j < 6; j++) + { + byte[] array = new byte[ 4 ]; + + Arrays.fill(array, ( byte ) j); + dstream.write(array); + } + try + { + byte[] array = new byte[ 4 ]; + + Arrays.fill(array, ( byte ) 7); + dstream.write(array); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + } + byte[] output = stream.toByteArray(); + + assertEquals(24, output.length); + for (int j = 0; j < 6; j++) + { + for (int k = 0; k < 4; k++) + { + assertEquals(String.valueOf((j * 4) + k), ( byte ) j, + output[ (j * 4) + k ]); + } + } + stream.close(); + } + + /** + * test write(byte[], int, int) behavior + * + * @exception IOException + */ + + public void testWrite3() + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DocumentOutputStream dstream = new DocumentOutputStream(stream, 25); + byte[] array = new byte[ 50 ]; + + for (int j = 0; j < 50; j++) + { + array[ j ] = ( byte ) j; + } + dstream.write(array, 1, 25); + try + { + dstream.write(array, 0, 1); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + } + byte[] output = stream.toByteArray(); + + assertEquals(25, output.length); + for (int j = 0; j < 25; j++) + { + assertEquals(( byte ) (j + 1), output[ j ]); + } + stream.close(); + } + + /** + * test writeFiller() + * + * @exception IOException + */ + + public void testWriteFiller() + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + DocumentOutputStream dstream = new DocumentOutputStream(stream, 25); + + for (int j = 0; j < 25; j++) + { + dstream.write(j); + } + try + { + dstream.write(0); + fail("Should have caught IOException"); + } + catch (IOException ignored) + { + } + dstream.writeFiller(100, ( byte ) 0xff); + byte[] output = stream.toByteArray(); + + assertEquals(100, output.length); + for (int j = 0; j < 25; j++) + { + assertEquals(( byte ) j, output[ j ]); + } + for (int j = 25; j < 100; j++) + { + assertEquals(String.valueOf(j), ( byte ) 0xff, output[ j ]); + } + stream.close(); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.filesystem.DocumentOutputStream"); + junit.textui.TestRunner.run(TestDocumentOutputStream.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java new file mode 100644 index 0000000000..7781196d14 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java @@ -0,0 +1,370 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.filesystem; + +import junit.framework.*; + +/** + * Class to test POIFSDocumentPath functionality + * + * @author Marc Johnson + */ + +public class TestPOIFSDocumentPath + extends TestCase +{ + + /** + * Constructor TestPOIFSDocumentPath + * + * @param name + */ + + public TestPOIFSDocumentPath(String name) + { + super(name); + } + + /** + * Test default constructor + */ + + public void testDefaultConstructor() + { + POIFSDocumentPath path = new POIFSDocumentPath(); + + assertEquals(0, path.length()); + } + + /** + * Test full path constructor + */ + + public void testFullPathConstructor() + { + String[] components = + { + "foo", "bar", "foobar", "fubar" + }; + + for (int j = 0; j < components.length; j++) + { + String[] params = new String[ j ]; + + for (int k = 0; k < j; k++) + { + params[ k ] = components[ k ]; + } + POIFSDocumentPath path = new POIFSDocumentPath(params); + + assertEquals(j, path.length()); + for (int k = 0; k < j; k++) + { + assertEquals(components[ k ], path.getComponent(k)); + } + if (j == 0) + { + assertNull(path.getParent()); + } + else + { + POIFSDocumentPath parent = path.getParent(); + + assertNotNull(parent); + assertEquals(j - 1, parent.length()); + for (int k = 0; k < j - 1; k++) + { + assertEquals(components[ k ], parent.getComponent(k)); + } + } + } + + // test weird variants + assertEquals(0, new POIFSDocumentPath(null).length()); + try + { + new POIFSDocumentPath(new String[] + { + "fu", "" + }); + fail("should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + } + try + { + new POIFSDocumentPath(new String[] + { + "fu", null + }); + fail("should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + } + } + + /** + * Test relative path constructor + */ + + public void testRelativePathConstructor() + { + String[] initialComponents = + { + "a", "b", "c" + }; + + for (int n = 0; n < initialComponents.length; n++) + { + String[] initialParams = new String[ n ]; + + for (int k = 0; k < n; k++) + { + initialParams[ k ] = initialComponents[ k ]; + } + POIFSDocumentPath base = + new POIFSDocumentPath(initialParams); + String[] components = + { + "foo", "bar", "foobar", "fubar" + }; + + for (int j = 0; j < components.length; j++) + { + String[] params = new String[ j ]; + + for (int k = 0; k < j; k++) + { + params[ k ] = components[ k ]; + } + POIFSDocumentPath path = new POIFSDocumentPath(base, params); + + assertEquals(j + n, path.length()); + for (int k = 0; k < n; k++) + { + assertEquals(initialComponents[ k ], + path.getComponent(k)); + } + for (int k = 0; k < j; k++) + { + assertEquals(components[ k ], path.getComponent(k + n)); + } + if ((j + n) == 0) + { + assertNull(path.getParent()); + } + else + { + POIFSDocumentPath parent = path.getParent(); + + assertNotNull(parent); + assertEquals(j + n - 1, parent.length()); + for (int k = 0; k < (j + n - 1); k++) + { + assertEquals(path.getComponent(k), + parent.getComponent(k)); + } + } + } + + // test weird variants + assertEquals(n, new POIFSDocumentPath(base, null).length()); + try + { + new POIFSDocumentPath(base, new String[] + { + "fu", "" + }); + fail("should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + } + try + { + new POIFSDocumentPath(base, new String[] + { + "fu", null + }); + fail("should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + } + } + } + + /** + * test equality + */ + + public void testEquality() + { + POIFSDocumentPath a1 = new POIFSDocumentPath(); + POIFSDocumentPath a2 = new POIFSDocumentPath(null); + POIFSDocumentPath a3 = new POIFSDocumentPath(new String[ 0 ]); + POIFSDocumentPath a4 = new POIFSDocumentPath(a1, null); + POIFSDocumentPath a5 = new POIFSDocumentPath(a1, + new String[ 0 ]); + POIFSDocumentPath[] paths = + { + a1, a2, a3, a4, a5 + }; + + for (int j = 0; j < paths.length; j++) + { + for (int k = 0; k < paths.length; k++) + { + assertEquals(String.valueOf(j) + "<>" + String.valueOf(k), + paths[ j ], paths[ k ]); + } + } + a2 = new POIFSDocumentPath(a1, new String[] + { + "foo" + }); + a3 = new POIFSDocumentPath(a2, new String[] + { + "bar" + }); + a4 = new POIFSDocumentPath(a3, new String[] + { + "fubar" + }); + a5 = new POIFSDocumentPath(a4, new String[] + { + "foobar" + }); + POIFSDocumentPath[] builtUpPaths = + { + a1, a2, a3, a4, a5 + }; + POIFSDocumentPath[] fullPaths = + { + new POIFSDocumentPath(), new POIFSDocumentPath(new String[] + { + "foo" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "fubar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "fubar", "foobar" + }) + }; + + for (int k = 0; k < builtUpPaths.length; k++) + { + for (int j = 0; j < fullPaths.length; j++) + { + if (k == j) + { + assertEquals(String.valueOf(j) + "<>" + + String.valueOf(k), fullPaths[ j ], + builtUpPaths[ k ]); + } + else + { + assertTrue(String.valueOf(j) + "<>" + String.valueOf(k), + !(fullPaths[ j ].equals(builtUpPaths[ k ]))); + } + } + } + POIFSDocumentPath[] badPaths = + { + new POIFSDocumentPath(new String[] + { + "_foo" + }), new POIFSDocumentPath(new String[] + { + "foo", "_bar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "_fubar" + }), new POIFSDocumentPath(new String[] + { + "foo", "bar", "fubar", "_foobar" + }) + }; + + for (int k = 0; k < builtUpPaths.length; k++) + { + for (int j = 0; j < badPaths.length; j++) + { + assertTrue(String.valueOf(j) + "<>" + String.valueOf(k), + !(fullPaths[ k ].equals(badPaths[ j ]))); + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.eventfilesystem.POIFSDocumentPath"); + junit.textui.TestRunner.run(TestPOIFSDocumentPath.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/property/LocalProperty.java b/src/testcases/org/apache/poi/poifs/property/LocalProperty.java new file mode 100644 index 0000000000..2a9f1e3ba1 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/property/LocalProperty.java @@ -0,0 +1,94 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.property; + +class LocalProperty + extends Property +{ + + /** + * Constructor LocalProperty + * + * @param index + */ + + LocalProperty(int index) + { + super(); + setName("foo" + index); + setIndex(index); + } + + /** + * Method preWrite + */ + + protected void preWrite() + { + } + + /** + * Method isDirectory + * + * @return false + */ + + public boolean isDirectory() + { + return false; + } +} // end package-scope class LocalProperty + diff --git a/src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java b/src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java new file mode 100644 index 0000000000..3ed55270e9 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java @@ -0,0 +1,437 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.property; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.common.PoiFSConstants; + +/** + * Class to test DirectoryProperty functionality + * + * @author Marc Johnson + */ + +public class TestDirectoryProperty + extends TestCase +{ + private DirectoryProperty _property; + private byte[] _testblock; + + /** + * Constructor TestDirectoryProperty + * + * @param name + */ + + public TestDirectoryProperty(String name) + { + super(name); + } + + /** + * Test constructing DirectoryProperty + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + createBasicDirectoryProperty(); + verifyProperty(); + } + + /** + * Test pre-write functionality + * + * @exception IOException + */ + + public void testPreWrite() + throws IOException + { + createBasicDirectoryProperty(); + _property.preWrite(); + + // shouldn't change anything at all + verifyProperty(); + verifyChildren(0); + + // now try adding 1 property + createBasicDirectoryProperty(); + _property.addChild(new LocalProperty(1)); + _property.preWrite(); + + // update children index + _testblock[ 0x4C ] = 1; + _testblock[ 0x4D ] = 0; + _testblock[ 0x4E ] = 0; + _testblock[ 0x4F ] = 0; + verifyProperty(); + verifyChildren(1); + + // now try adding 2 properties + createBasicDirectoryProperty(); + _property.addChild(new LocalProperty(1)); + _property.addChild(new LocalProperty(2)); + _property.preWrite(); + + // update children index + _testblock[ 0x4C ] = 2; + _testblock[ 0x4D ] = 0; + _testblock[ 0x4E ] = 0; + _testblock[ 0x4F ] = 0; + verifyProperty(); + verifyChildren(2); + + // beat on the children allocation code + for (int count = 1; count < 100; count++) + { + createBasicDirectoryProperty(); + for (int j = 1; j < (count + 1); j++) + { + _property.addChild(new LocalProperty(j)); + } + _property.preWrite(); + verifyChildren(count); + } + } + + private void verifyChildren(int count) + throws IOException + { + Iterator iter = _property.getChildren(); + List children = new ArrayList(); + + while (iter.hasNext()) + { + children.add(iter.next()); + } + assertEquals(count, children.size()); + if (count != 0) + { + boolean[] found = new boolean[ count ]; + + found[ _property.getChildIndex() - 1 ] = true; + int total_found = 1; + + Arrays.fill(found, false); + iter = children.iterator(); + while (iter.hasNext()) + { + Property child = ( Property ) iter.next(); + Child next = child.getNextChild(); + + if (next != null) + { + int index = (( Property ) next).getIndex(); + + if (index != -1) + { + assertTrue("found index " + index + " twice", + !found[ index - 1 ]); + found[ index - 1 ] = true; + total_found++; + } + } + Child previous = child.getPreviousChild(); + + if (previous != null) + { + int index = (( Property ) previous).getIndex(); + + if (index != -1) + { + assertTrue("found index " + index + " twice", + !found[ index - 1 ]); + found[ index - 1 ] = true; + total_found++; + } + } + } + assertEquals(count, total_found); + } + } + + private void createBasicDirectoryProperty() + { + String name = "MyDirectory"; + + _property = new DirectoryProperty(name); + _testblock = new byte[ 128 ]; + int index = 0; + + for (; index < 0x40; index++) + { + _testblock[ index ] = ( byte ) 0; + } + int limit = Math.min(31, name.length()); + + _testblock[ index++ ] = ( byte ) (2 * (limit + 1)); + _testblock[ index++ ] = ( byte ) 0; + _testblock[ index++ ] = ( byte ) 1; + _testblock[ index++ ] = ( byte ) 1; + for (; index < 0x50; index++) + { + _testblock[ index ] = ( byte ) 0xff; + } + for (; index < 0x80; index++) + { + _testblock[ index ] = ( byte ) 0; + } + byte[] name_bytes = name.getBytes(); + + for (index = 0; index < limit; index++) + { + _testblock[ index * 2 ] = name_bytes[ index ]; + } + } + + private void verifyProperty() + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(512); + + _property.writeData(stream); + byte[] output = stream.toByteArray(); + + assertEquals(_testblock.length, output.length); + for (int j = 0; j < _testblock.length; j++) + { + assertEquals("mismatch at offset " + j, _testblock[ j ], + output[ j ]); + } + } + + /** + * Test addChild + * + * @exception IOException + */ + + public void testAddChild() + throws IOException + { + createBasicDirectoryProperty(); + _property.addChild(new LocalProperty(1)); + _property.addChild(new LocalProperty(2)); + try + { + _property.addChild(new LocalProperty(1)); + fail("should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + try + { + _property.addChild(new LocalProperty(2)); + fail("should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + _property.addChild(new LocalProperty(3)); + } + + /** + * Test deleteChild + * + * @exception IOException + */ + + public void testDeleteChild() + throws IOException + { + createBasicDirectoryProperty(); + Property p1 = new LocalProperty(1); + + _property.addChild(p1); + try + { + _property.addChild(new LocalProperty(1)); + fail("should have caught IOException"); + } + catch (IOException ignored) + { + + // as expected + } + assertTrue(_property.deleteChild(p1)); + assertTrue(!_property.deleteChild(p1)); + _property.addChild(new LocalProperty(1)); + } + + /** + * Test changeName + * + * @exception IOException + */ + + public void testChangeName() + throws IOException + { + createBasicDirectoryProperty(); + Property p1 = new LocalProperty(1); + String originalName = p1.getName(); + + _property.addChild(p1); + assertTrue(_property.changeName(p1, "foobar")); + assertEquals("foobar", p1.getName()); + assertTrue(!_property.changeName(p1, "foobar")); + assertEquals("foobar", p1.getName()); + Property p2 = new LocalProperty(1); + + _property.addChild(p2); + assertTrue(!_property.changeName(p1, originalName)); + assertTrue(_property.changeName(p2, "foo")); + assertTrue(_property.changeName(p1, originalName)); + } + + /** + * Test reading constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + byte[] input = + { + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x08, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x46, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x5C, ( byte ) 0xE8, ( byte ) 0x23, + ( byte ) 0x9E, ( byte ) 0x6B, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + + verifyReadingProperty(0, input, 0, "Boot Entry"); + } + + private void verifyReadingProperty(int index, byte [] input, int offset, + String name) + throws IOException + { + DirectoryProperty property = new DirectoryProperty(index, input, + offset); + ByteArrayOutputStream stream = new ByteArrayOutputStream(128); + byte[] expected = new byte[ 128 ]; + + System.arraycopy(input, offset, expected, 0, 128); + property.writeData(stream); + byte[] output = stream.toByteArray(); + + assertEquals(128, output.length); + for (int j = 0; j < 128; j++) + { + assertEquals("mismatch at offset " + j, expected[ j ], + output[ j ]); + } + assertEquals(index, property.getIndex()); + assertEquals(name, property.getName()); + assertTrue(!property.getChildren().hasNext()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.property.DirectoryProperty"); + junit.textui.TestRunner.run(TestDirectoryProperty.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java b/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java new file mode 100644 index 0000000000..17297fc4ec --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java @@ -0,0 +1,358 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.property; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.DocumentProperty; + +/** + * Class to test DocumentProperty functionality + * + * @author Marc Johnson + */ + +public class TestDocumentProperty + extends TestCase +{ + + /** + * Constructor TestDocumentProperty + * + * @param name + */ + + public TestDocumentProperty(String name) + { + super(name); + } + + /** + * Test constructing DocumentPropertys + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + + // test with short name, small file + verifyProperty("foo", 1234); + + // test with just long enough name, small file + verifyProperty("A.really.long.long.long.name123", 2345); + + // test with longer name, just small enough file + verifyProperty("A.really.long.long.long.name1234", 4095); + + // test with just long enough file + verifyProperty("A.really.long.long.long.name123", 4096); + } + + /** + * Test reading constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + byte[] input = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x08, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x46, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x5C, ( byte ) 0xE8, ( byte ) 0x23, + ( byte ) 0x9E, ( byte ) 0x6B, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + + verifyReadingProperty(1, input, 128, "Workbook"); + verifyReadingProperty(2, input, 256, "\005SummaryInformation"); + verifyReadingProperty(3, input, 384, + "\005DocumentSummaryInformation"); + } + + private void verifyReadingProperty(int index, byte [] input, int offset, + String name) + throws IOException + { + DocumentProperty property = new DocumentProperty(index, input, + offset); + ByteArrayOutputStream stream = new ByteArrayOutputStream(128); + byte[] expected = new byte[ 128 ]; + + System.arraycopy(input, offset, expected, 0, 128); + property.writeData(stream); + byte[] output = stream.toByteArray(); + + assertEquals(128, output.length); + for (int j = 0; j < 128; j++) + { + assertEquals("mismatch at offset " + j, expected[ j ], + output[ j ]); + } + assertEquals(index, property.getIndex()); + assertEquals(name, property.getName()); + } + + private void verifyProperty(String name, int size) + throws IOException + { + DocumentProperty property = new DocumentProperty(name, size); + + if (size >= 4096) + { + assertTrue(!property.shouldUseSmallBlocks()); + } + else + { + assertTrue(property.shouldUseSmallBlocks()); + } + byte[] testblock = new byte[ 128 ]; + int index = 0; + + for (; index < 0x40; index++) + { + testblock[ index ] = ( byte ) 0; + } + int limit = Math.min(31, name.length()); + + testblock[ index++ ] = ( byte ) (2 * (limit + 1)); + testblock[ index++ ] = ( byte ) 0; + testblock[ index++ ] = ( byte ) 2; + testblock[ index++ ] = ( byte ) 1; + for (; index < 0x50; index++) + { + testblock[ index ] = ( byte ) 0xFF; + } + for (; index < 0x78; index++) + { + testblock[ index ] = ( byte ) 0; + } + int sz = size; + + testblock[ index++ ] = ( byte ) sz; + sz /= 256; + testblock[ index++ ] = ( byte ) sz; + sz /= 256; + testblock[ index++ ] = ( byte ) sz; + sz /= 256; + testblock[ index++ ] = ( byte ) sz; + for (; index < 0x80; index++) + { + testblock[ index ] = ( byte ) 0x0; + } + byte[] name_bytes = name.getBytes(); + + for (index = 0; index < limit; index++) + { + testblock[ index * 2 ] = name_bytes[ index ]; + } + ByteArrayOutputStream stream = new ByteArrayOutputStream(512); + + property.writeData(stream); + byte[] output = stream.toByteArray(); + + assertEquals(testblock.length, output.length); + for (int j = 0; j < testblock.length; j++) + { + assertEquals("mismatch at offset " + j, testblock[ j ], + output[ j ]); + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.property.DocumentProperty"); + junit.textui.TestRunner.run(TestDocumentProperty.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java b/src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java new file mode 100644 index 0000000000..16d6db7bd1 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java @@ -0,0 +1,2275 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.property; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.storage.RawDataBlock; + +/** + * Class to test PropertyFactory functionality + * + * @author Marc Johnson + */ + +public class TestPropertyFactory + extends TestCase +{ + + /** + * Constructor TestPropertyFactory + * + * @param name + */ + + public TestPropertyFactory(String name) + { + super(name); + } + + /** + * Test executing convertToProperties + * + * @exception IOException + */ + + public void testConvertToProperties() + throws IOException + { + + // real data from a real file! + byte[] testdata = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x47, ( byte ) 0xA4, ( byte ) 0xDE, + ( byte ) 0xEC, ( byte ) 0x65, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x40, ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xA0, ( byte ) 0x7F, ( byte ) 0x29, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0xC0, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x76, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x47, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x25, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x27, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x59, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x29, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x2D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x30, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4A, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x2B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x25, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x27, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x30, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x42, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x40, ( byte ) 0xDA, ( byte ) 0x5B, ( byte ) 0x08, + ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + ByteArrayInputStream stream = new ByteArrayInputStream(testdata); + RawDataBlock[] raw_data = + new RawDataBlock[ testdata.length / 512 ]; + + for (int j = 0; j < raw_data.length; j++) + { + raw_data[ j ] = new RawDataBlock(stream); + } + List properties = PropertyFactory.convertToProperties(raw_data); + + assertEquals(64, properties.size()); + String[] names = + { + "Root Entry", null, null, null, null, null, null, null, null, + null, null, null, null, "Deal Information", "Deal Description", + "Sales Area Code", "Deal Currency", "Outbound Travel Dates", + "Maximum Stay", "Maximum Stay Period", "Deal Type", "Sub Deal", + "Commission Value", "Fare Type", "FUD Grid Dimensions", + "FUD Grid Information", "Double Dealing Indicator", + "Business Type", "Umbrella Links and Passengers", "Agents Name", + "Number of Passengers", "ALC Codes", "Consortia Codes", + "Child Percentage Permitted", "Percentage of Yield", + "Net Remit Permitted", "Infant Discount Permitted", + "Infant Discount Value", "TRVA Information", + "Business Justification", "Surcharge", "Nature of Variation", + "Other Refund Text", "Cancellation Fee Percentage", + "Cancellation Fee Fixed Value", "Cancellation Fee Currency", + "Remarks", "Other Carrier Sectors", "Prorate Comments", null, + null, null, null, null, null, null, null, null, null, null, null, + null, null, null + }; + + assertEquals(64, names.length); + boolean[] isRoot = + { + true, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false + }; + + assertEquals(64, isRoot.length); + boolean[] isDocument = + { + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, true, true, true, true, true, + true, true, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false + }; + + assertEquals(64, isDocument.length); + boolean[] isDirectory = + { + false, false, false, false, false, false, false, false, false, + false, false, false, false, true, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false + }; + + assertEquals(64, isDirectory.length); + boolean[] isNull = + { + false, true, true, true, true, true, true, true, true, true, true, + true, true, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true + }; + + assertEquals(64, isNull.length); + for (int j = 0; j < 64; j++) + { + if (isNull[ j ]) + { + assertNull("Checking property " + j, properties.get(j)); + } + else + { + assertNotNull("Checking property " + j, properties.get(j)); + if (isRoot[ j ]) + { + assertTrue("Checking property " + j, + properties.get(j) instanceof RootProperty); + } + if (isDirectory[ j ]) + { + assertTrue("Checking property " + j, + properties.get(j) + instanceof DirectoryProperty); + } + if (isDocument[ j ]) + { + assertTrue("Checking property " + j, + properties.get(j) instanceof DocumentProperty); + } + assertEquals("Checking property " + j, names[ j ], + (( Property ) properties.get(j)).getName()); + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.property.PropertyFactory"); + junit.textui.TestRunner.run(TestPropertyFactory.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java b/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java new file mode 100644 index 0000000000..cfebebe517 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java @@ -0,0 +1,2684 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.property; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.storage.BlockAllocationTableReader; +import org.apache.poi.poifs.storage.RawDataBlockList; + +/** + * Class to test PropertyTable functionality + * + * @author Marc Johnson + */ + +public class TestPropertyTable + extends TestCase +{ + + /** + * Constructor TestPropertyTable + * + * @param name + */ + + public TestPropertyTable(String name) + { + super(name); + } + + /** + * Test PropertyTable + * <p> + * Running individual tests of the PropertyTable methods, which is + * the traditional way to write unit tests (at least for me), + * seems somewhat useless in this case. Of greater relevance: if + * one follows the normal steps of creating a PropertyTable, and + * then checking the output, does it make sense? In other words, + * more of an integration test. + * <p> + * So, the test consists of creating a PropertyTable instance, + * adding three DocumentProperty instances to it, and then getting + * the output (including the preWrite phase first), and comparing + * it against a real property table extracted from a file known to + * be acceptable to Excel. + * + * @exception IOException + */ + + public void testWriterPropertyTable() + throws IOException + { + + // create the PropertyTable + PropertyTable table = new PropertyTable(); + + // create three DocumentProperty instances and add them to the + // PropertyTable + DocumentProperty workbook = new DocumentProperty("Workbook", + 0x00046777); + + workbook.setStartBlock(0); + DocumentProperty summary1 = + new DocumentProperty("\005SummaryInformation", 0x00001000); + + summary1.setStartBlock(0x00000234); + DocumentProperty summary2 = + new DocumentProperty("\005DocumentSummaryInformation", + 0x00001000); + + summary2.setStartBlock(0x0000023C); + table.addProperty(workbook); + RootProperty root = table.getRoot(); + + root.addChild(workbook); + table.addProperty(summary1); + root = table.getRoot(); + root.addChild(summary1); + table.addProperty(summary2); + root = table.getRoot(); + root.addChild(summary2); + table.preWrite(); + ByteArrayOutputStream stream = new ByteArrayOutputStream(512); + byte[] testblock = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xfe, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x77, ( byte ) 0x67, ( byte ) 0x04, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3c, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + + table.writeBlocks(stream); + byte[] output = stream.toByteArray(); + + assertEquals("length check #1", testblock.length, output.length); + for (int j = 0; j < testblock.length; j++) + { + assertEquals("content check #1: mismatch at offset " + j, + testblock[ j ], output[ j ]); + } + table.removeProperty(summary1); + root = table.getRoot(); + root.deleteChild(summary1); + table.preWrite(); + stream = new ByteArrayOutputStream(512); + byte[] testblock2 = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xfe, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x77, ( byte ) 0x67, ( byte ) 0x04, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3c, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + + table.writeBlocks(stream); + output = stream.toByteArray(); + assertEquals("length check #2", testblock2.length, output.length); + for (int j = 0; j < testblock2.length; j++) + { + assertEquals("content check #2: mismatch at offset " + j, + testblock2[ j ], output[ j ]); + } + table.addProperty(summary1); + root = table.getRoot(); + root.addChild(summary1); + table.preWrite(); + stream = new ByteArrayOutputStream(512); + byte[] testblock3 = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xfe, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x77, ( byte ) 0x67, ( byte ) 0x04, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3c, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00, + ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + + table.writeBlocks(stream); + output = stream.toByteArray(); + assertEquals("length check #3", testblock3.length, output.length); + for (int j = 0; j < testblock3.length; j++) + { + assertEquals("content check #3: mismatch at offset " + j, + testblock3[ j ], output[ j ]); + } + } + + /** + * test reading constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + + // first, we need the raw data blocks + byte[] raw_data_array = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x80, ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4A, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x59, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x1D, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x41, ( byte ) 0x29, ( byte ) 0x31, + ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, + ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, + ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x20, ( byte ) 0x74, + ( byte ) 0x6F, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x36, + ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74, + ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30, + ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x18, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00, + ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65, + ( byte ) 0x73, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + RawDataBlockList data_blocks = + new RawDataBlockList(new ByteArrayInputStream(raw_data_array)); + int[] bat_array = + { + 15 + }; + + // need to initialize the block list with a block allocation + // table + new BlockAllocationTableReader(1, bat_array, 0, -2, data_blocks); + + // get property table from the document + PropertyTable table = new PropertyTable(0, data_blocks); + + assertEquals(30 * 64, table.getRoot().getSize()); + int count = 0; + Property child = null; + Iterator iter = table.getRoot().getChildren(); + + while (iter.hasNext()) + { + child = ( Property ) iter.next(); + ++count; + } + assertEquals(1, count); + assertTrue(child.isDirectory()); + iter = (( DirectoryProperty ) child).getChildren(); + count = 0; + while (iter.hasNext()) + { + iter.next(); + ++count; + } + assertEquals(35, count); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.property.PropertyTable"); + junit.textui.TestRunner.run(TestPropertyTable.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java b/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java new file mode 100644 index 0000000000..8304647595 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java @@ -0,0 +1,259 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.property; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.common.PoiFSConstants; + +/** + * Class to test RootProperty functionality + * + * @author Marc Johnson + */ + +public class TestRootProperty + extends TestCase +{ + private RootProperty _property; + private byte[] _testblock; + + /** + * Constructor TestRootProperty + * + * @param name + */ + + public TestRootProperty(String name) + { + super(name); + } + + /** + * Test constructing RootProperty + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + createBasicRootProperty(); + verifyProperty(); + } + + private void createBasicRootProperty() + { + _property = new RootProperty(); + _testblock = new byte[ 128 ]; + int index = 0; + + for (; index < 0x40; index++) + { + _testblock[ index ] = ( byte ) 0; + } + String name = "Root Entry"; + int limit = Math.min(31, name.length()); + + _testblock[ index++ ] = ( byte ) (2 * (limit + 1)); + _testblock[ index++ ] = ( byte ) 0; + _testblock[ index++ ] = ( byte ) 5; + _testblock[ index++ ] = ( byte ) 1; + for (; index < 0x50; index++) + { + _testblock[ index ] = ( byte ) 0xff; + } + for (; index < 0x74; index++) + { + _testblock[ index ] = ( byte ) 0; + } + _testblock[ index++ ] = ( byte ) PoiFSConstants.END_OF_CHAIN; + for (; index < 0x78; index++) + { + _testblock[ index ] = ( byte ) 0xff; + } + for (; index < 0x80; index++) + { + _testblock[ index ] = ( byte ) 0; + } + byte[] name_bytes = name.getBytes(); + + for (index = 0; index < limit; index++) + { + _testblock[ index * 2 ] = name_bytes[ index ]; + } + } + + private void verifyProperty() + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(512); + + _property.writeData(stream); + byte[] output = stream.toByteArray(); + + assertEquals(_testblock.length, output.length); + for (int j = 0; j < _testblock.length; j++) + { + assertEquals("mismatch at offset " + j, _testblock[ j ], + output[ j ]); + } + } + + /** + * test setSize + */ + + public void testSetSize() + { + for (int j = 0; j < 10; j++) + { + createBasicRootProperty(); + _property.setSize(j); + assertEquals("trying block count of " + j, j * 64, + _property.getSize()); + } + } + + /** + * Test reading constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + byte[] input = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x08, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x46, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xC0, ( byte ) 0x5C, ( byte ) 0xE8, ( byte ) 0x23, + ( byte ) 0x9E, ( byte ) 0x6B, ( byte ) 0xC1, ( byte ) 0x01, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + + verifyReadingProperty(0, input, 0, "Root Entry"); + } + + private void verifyReadingProperty(int index, byte [] input, int offset, + String name) + throws IOException + { + RootProperty property = new RootProperty(index, input, + offset); + ByteArrayOutputStream stream = new ByteArrayOutputStream(128); + byte[] expected = new byte[ 128 ]; + + System.arraycopy(input, offset, expected, 0, 128); + property.writeData(stream); + byte[] output = stream.toByteArray(); + + assertEquals(128, output.length); + for (int j = 0; j < 128; j++) + { + assertEquals("mismatch at offset " + j, expected[ j ], + output[ j ]); + } + assertEquals(index, property.getIndex()); + assertEquals(name, property.getName()); + assertTrue(!property.getChildren().hasNext()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.property.RootProperty"); + junit.textui.TestRunner.run(TestRootProperty.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/LocalProperty.java b/src/testcases/org/apache/poi/poifs/storage/LocalProperty.java new file mode 100644 index 0000000000..bd8a814fff --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/LocalProperty.java @@ -0,0 +1,93 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import org.apache.poi.poifs.property.Property; + +class LocalProperty + extends Property +{ + + /** + * Constructor TestProperty + * + * @param name name of the property + */ + + LocalProperty(String name) + { + super(); + setName(name); + } + + /** + * do nothing + */ + + protected void preWrite() + { + } + + /** + * @return false + */ + + public boolean isDirectory() + { + return false; + } +} // end package scope class LocalProperty + diff --git a/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java b/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java new file mode 100644 index 0000000000..d4265ce87e --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java @@ -0,0 +1,243 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; + +import java.io.*; + +import java.util.*; + +/** + * Class LocalRawDataBlockList + * + * @author Marc Johnson(mjohnson at apache dot org) + */ + +public class LocalRawDataBlockList + extends RawDataBlockList +{ + private List _list; + private RawDataBlock[] _array; + + /** + * Constructor LocalRawDataBlockList + * + * @exception IOException + */ + + public LocalRawDataBlockList() + throws IOException + { + super(new ByteArrayInputStream(new byte[ 0 ])); + _list = new ArrayList(); + _array = null; + } + + /** + * create and a new XBAT block + * + * @param start index of first BAT block + * @param end index of last BAT block + * @param chain index of next XBAT block + * + * @exception IOException + */ + + public void createNewXBATBlock(final int start, final int end, + final int chain) + throws IOException + { + byte[] data = new byte[ 512 ]; + int offset = 0; + + for (int k = start; k <= end; k++) + { + LittleEndian.putInt(data, offset, k); + offset += LittleEndianConsts.INT_SIZE; + } + while (offset != 508) + { + LittleEndian.putInt(data, offset, -1); + offset += LittleEndianConsts.INT_SIZE; + } + LittleEndian.putInt(data, offset, chain); + add(new RawDataBlock(new ByteArrayInputStream(data))); + } + + /** + * create a BAT block and add it to the list + * + * @param start_index initial index for the block list + * + * @exception IOException + */ + + public void createNewBATBlock(final int start_index) + throws IOException + { + byte[] data = new byte[ 512 ]; + int offset = 0; + + for (int j = 0; j < 128; j++) + { + int index = start_index + j; + + if (index % 256 == 0) + { + LittleEndian.putInt(data, offset, -1); + } + else if (index % 256 == 255) + { + LittleEndian.putInt(data, offset, -2); + } + else + { + LittleEndian.putInt(data, offset, index + 1); + } + offset += LittleEndianConsts.INT_SIZE; + } + add(new RawDataBlock(new ByteArrayInputStream(data))); + } + + /** + * fill the list with dummy blocks + * + * @param count of blocks + * + * @exception IOException + */ + + public void fill(final int count) + throws IOException + { + int limit = 128 * count; + + for (int j = _list.size(); j < limit; j++) + { + add(new RawDataBlock(new ByteArrayInputStream(new byte[ 0 ]))); + } + } + + /** + * add a new block + * + * @param block new block to add + */ + + public void add(RawDataBlock block) + { + _list.add(block); + } + + /** + * override of remove method + * + * @param index of block to be removed + * + * @return desired block + * + * @exception IOException + */ + + public ListManagedBlock remove(final int index) + throws IOException + { + ensureArrayExists(); + RawDataBlock rvalue = null; + + try + { + rvalue = _array[ index ]; + if (rvalue == null) + { + throw new IOException("index " + index + " is null"); + } + _array[ index ] = null; + } + catch (ArrayIndexOutOfBoundsException ignored) + { + throw new IOException("Cannot remove block[ " + index + + " ]; out of range"); + } + return rvalue; + } + + /** + * remove the specified block from the list + * + * @param index the index of the specified block; if the index is + * out of range, that's ok + */ + + public void zap(final int index) + { + ensureArrayExists(); + if ((index >= 0) && (index < _array.length)) + { + _array[ index ] = null; + } + } + + private void ensureArrayExists() + { + if (_array == null) + { + _array = ( RawDataBlock [] ) _list.toArray(new RawDataBlock[ 0 ]); + } + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java new file mode 100644 index 0000000000..deb632da28 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java @@ -0,0 +1,320 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +/** + * Class to test BATBlock functionality + * + * @author Marc Johnson + */ + +public class TestBATBlock + extends TestCase +{ + + /** + * Constructor TestBATBlock + * + * @param name + */ + + public TestBATBlock(String name) + { + super(name); + } + + /** + * Test the createBATBlocks method. The test involves setting up + * various arrays of int's and ensuring that the correct number of + * BATBlocks is created for each array, and that the data from + * each array is correctly written to the BATBlocks. + * + * @exception IOException + */ + + public void testCreateBATBlocks() + throws IOException + { + + // test 0 length array (basic sanity) + BATBlock[] rvalue = BATBlock.createBATBlocks(createTestArray(0)); + + assertEquals(0, rvalue.length); + + // test array of length 1 + rvalue = BATBlock.createBATBlocks(createTestArray(1)); + assertEquals(1, rvalue.length); + verifyContents(rvalue, 1); + + // test array of length 127 + rvalue = BATBlock.createBATBlocks(createTestArray(127)); + assertEquals(1, rvalue.length); + verifyContents(rvalue, 127); + + // test array of length 128 + rvalue = BATBlock.createBATBlocks(createTestArray(128)); + assertEquals(1, rvalue.length); + verifyContents(rvalue, 128); + + // test array of length 129 + rvalue = BATBlock.createBATBlocks(createTestArray(129)); + assertEquals(2, rvalue.length); + verifyContents(rvalue, 129); + } + + private int [] createTestArray(int count) + { + int[] rvalue = new int[ count ]; + + for (int j = 0; j < count; j++) + { + rvalue[ j ] = j; + } + return rvalue; + } + + private void verifyContents(BATBlock [] blocks, int entries) + throws IOException + { + byte[] expected = new byte[ 512 * blocks.length ]; + + Arrays.fill(expected, ( byte ) 0xFF); + int offset = 0; + + for (int j = 0; j < entries; j++) + { + expected[ offset++ ] = ( byte ) j; + expected[ offset++ ] = 0; + expected[ offset++ ] = 0; + expected[ offset++ ] = 0; + } + ByteArrayOutputStream stream = new ByteArrayOutputStream(512 + * blocks.length); + + for (int j = 0; j < blocks.length; j++) + { + blocks[ j ].writeBlocks(stream); + } + byte[] actual = stream.toByteArray(); + + assertEquals(expected.length, actual.length); + for (int j = 0; j < expected.length; j++) + { + assertEquals(expected[ j ], actual[ j ]); + } + } + + /** + * test createXBATBlocks + * + * @exception IOException + */ + + public void testCreateXBATBlocks() + throws IOException + { + + // test 0 length array (basic sanity) + BATBlock[] rvalue = BATBlock.createXBATBlocks(createTestArray(0), 1); + + assertEquals(0, rvalue.length); + + // test array of length 1 + rvalue = BATBlock.createXBATBlocks(createTestArray(1), 1); + assertEquals(1, rvalue.length); + verifyXBATContents(rvalue, 1, 1); + + // test array of length 127 + rvalue = BATBlock.createXBATBlocks(createTestArray(127), 1); + assertEquals(1, rvalue.length); + verifyXBATContents(rvalue, 127, 1); + + // test array of length 128 + rvalue = BATBlock.createXBATBlocks(createTestArray(128), 1); + assertEquals(2, rvalue.length); + verifyXBATContents(rvalue, 128, 1); + + // test array of length 254 + rvalue = BATBlock.createXBATBlocks(createTestArray(254), 1); + assertEquals(2, rvalue.length); + verifyXBATContents(rvalue, 254, 1); + + // test array of length 255 + rvalue = BATBlock.createXBATBlocks(createTestArray(255), 1); + assertEquals(3, rvalue.length); + verifyXBATContents(rvalue, 255, 1); + } + + private void verifyXBATContents(BATBlock [] blocks, int entries, + int start_block) + throws IOException + { + byte[] expected = new byte[ 512 * blocks.length ]; + + Arrays.fill(expected, ( byte ) 0xFF); + int offset = 0; + + for (int j = 0; j < entries; j++) + { + if ((j % 127) == 0) + { + if (j != 0) + { + offset += 4; + } + } + expected[ offset++ ] = ( byte ) j; + expected[ offset++ ] = 0; + expected[ offset++ ] = 0; + expected[ offset++ ] = 0; + } + for (int j = 0; j < (blocks.length - 1); j++) + { + offset = 508 + (j * 512); + expected[ offset++ ] = ( byte ) (start_block + j + 1); + expected[ offset++ ] = 0; + expected[ offset++ ] = 0; + expected[ offset++ ] = 0; + } + offset = (blocks.length * 512) - 4; + expected[ offset++ ] = ( byte ) -2; + expected[ offset++ ] = ( byte ) -1; + expected[ offset++ ] = ( byte ) -1; + expected[ offset++ ] = ( byte ) -1; + ByteArrayOutputStream stream = new ByteArrayOutputStream(512 + * blocks.length); + + for (int j = 0; j < blocks.length; j++) + { + blocks[ j ].writeBlocks(stream); + } + byte[] actual = stream.toByteArray(); + + assertEquals(expected.length, actual.length); + for (int j = 0; j < expected.length; j++) + { + assertEquals("offset " + j, expected[ j ], actual[ j ]); + } + } + + /** + * test calculateXBATStorageRequirements + */ + + public void testCalculateXBATStorageRequirements() + { + int[] blockCounts = + { + 0, 1, 127, 128 + }; + int[] requirements = + { + 0, 1, 1, 2 + }; + + for (int j = 0; j < blockCounts.length; j++) + { + assertEquals( + "requirement for " + blockCounts[ j ], requirements[ j ], + BATBlock.calculateXBATStorageRequirements(blockCounts[ j ])); + } + } + + /** + * test entriesPerBlock + */ + + public void testEntriesPerBlock() + { + assertEquals(128, BATBlock.entriesPerBlock()); + } + + /** + * test entriesPerXBATBlock + */ + + public void testEntriesPerXBATBlock() + { + assertEquals(127, BATBlock.entriesPerXBATBlock()); + } + + /** + * test getXBATChainOffset + */ + + public void testGetXBATChainOffset() + { + assertEquals(508, BATBlock.getXBATChainOffset()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing org.apache.poi.poifs.storage.BATBlock"); + junit.textui.TestRunner.run(TestBATBlock.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java new file mode 100644 index 0000000000..cd0c116b71 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java @@ -0,0 +1,1402 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.common.PoiFSConstants; +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; + +/** + * Class to test BlockAllocationTableReader functionality + * + * @author Marc Johnson + */ + +public class TestBlockAllocationTableReader + extends TestCase +{ + + /** + * Constructor TestBlockAllocationTableReader + * + * @param name + */ + + public TestBlockAllocationTableReader(String name) + { + super(name); + } + + /** + * Test small block allocation table constructor + * + * @exception IOException + */ + + public void testSmallBATConstructor() + throws IOException + { + + // need to create an array of raw blocks containing the SBAT, + // and a small document block list + byte[] sbat_data = + { + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + RawDataBlock[] sbats = + { + new RawDataBlock(new ByteArrayInputStream(sbat_data)) + }; + byte[] sbt_data = + { + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x28, ( byte ) 0x00, + ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65, + ( byte ) 0x73, ( byte ) 0x2D, ( byte ) 0x55, ( byte ) 0x37, + ( byte ) 0x37, ( byte ) 0x32, ( byte ) 0x37, ( byte ) 0x39, + ( byte ) 0x32, ( byte ) 0x2D, ( byte ) 0x28, ( byte ) 0x31, + ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, + ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, + ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x40, ( byte ) 0x31, + ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x34, ( byte ) 0x31, + ( byte ) 0x2D, ( byte ) 0x33, ( byte ) 0x33, ( byte ) 0x29, + ( byte ) 0x2E, ( byte ) 0x5A, ( byte ) 0x44, ( byte ) 0x46, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x80, ( byte ) 0x27, + ( byte ) 0xE2, ( byte ) 0x40, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x80, ( byte ) 0x27, + ( byte ) 0xE2, ( byte ) 0x40, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x08, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x61, + ( byte ) 0x76, ( byte ) 0x65, ( byte ) 0x64, ( byte ) 0x08, + ( byte ) 0x00, ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x53, + ( byte ) 0x2E, ( byte ) 0x48, ( byte ) 0x55, ( byte ) 0x53, + ( byte ) 0x53, ( byte ) 0x41, ( byte ) 0x49, ( byte ) 0x4E, + ( byte ) 0x20, ( byte ) 0x41, ( byte ) 0x20, ( byte ) 0x44, + ( byte ) 0x45, ( byte ) 0x56, ( byte ) 0x20, ( byte ) 0x4F, + ( byte ) 0x46, ( byte ) 0x46, ( byte ) 0x52, ( byte ) 0x20, + ( byte ) 0x55, ( byte ) 0x4B, ( byte ) 0x08, ( byte ) 0x00, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x31, ( byte ) 0x36, + ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74, + ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30, + ( byte ) 0x31, ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, + ( byte ) 0x00, ( byte ) 0x35, ( byte ) 0x2E, ( byte ) 0x33, + ( byte ) 0x2E, ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00, + ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x1D, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x41, ( byte ) 0x29, ( byte ) 0x31, + ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, + ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, + ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x20, ( byte ) 0x74, + ( byte ) 0x6F, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x36, + ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74, + ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30, + ( byte ) 0x31, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0x31, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x18, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x17, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x2E, ( byte ) 0x48, ( byte ) 0x55, + ( byte ) 0x53, ( byte ) 0x53, ( byte ) 0x41, ( byte ) 0x49, + ( byte ) 0x4E, ( byte ) 0x20, ( byte ) 0x41, ( byte ) 0x20, + ( byte ) 0x44, ( byte ) 0x45, ( byte ) 0x56, ( byte ) 0x20, + ( byte ) 0x4F, ( byte ) 0x46, ( byte ) 0x46, ( byte ) 0x52, + ( byte ) 0x20, ( byte ) 0x55, ( byte ) 0x4B, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00 + }; + RawDataBlock[] sbts = new RawDataBlock[ 7 ]; + ByteArrayInputStream sbt_input = new ByteArrayInputStream(sbt_data); + + for (int j = 0; j < 7; j++) + { + sbts[ j ] = new RawDataBlock(sbt_input); + } + SmallDocumentBlockList small_blocks = + new SmallDocumentBlockList(SmallDocumentBlock.extract(sbts)); + BlockAllocationTableReader sbat = + new BlockAllocationTableReader(sbats, small_blocks); + boolean[] isUsed = + { + false, false, false, false, false, false, false, false, false, + false, true, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, true, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false + }; + int[] nextIndex = + { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, 34, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + }; + + for (int j = 0; j < 128; j++) + { + if (isUsed[ j ]) + { + assertTrue("checking usage of block " + j, sbat.isUsed(j)); + assertEquals("checking usage of block " + j, nextIndex[ j ], + sbat.getNextBlockIndex(j)); + small_blocks.remove(j); + } + else + { + assertTrue("checking usage of block " + j, !sbat.isUsed(j)); + try + { + small_blocks.remove(j); + fail("removing block " + j + " should have failed"); + } + catch (IOException ignored) + { + } + } + } + } + + /** + * Test reading constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + + // create a document, minus the header block, and use that to + // create a RawDataBlockList. The document will exist entire + // of BATBlocks and XBATBlocks + // + // we will create two XBAT blocks, which will encompass 128 + // BAT blocks between them, and two extra BAT blocks which + // will be in the block array passed to the constructor. This + // makes a total of 130 BAT blocks, which will encompass + // 16,640 blocks, for a file size of some 8.5 megabytes. + // + // Naturally, we'll fake that out ... + // + // map of blocks: + // block 0: xbat block 0 + // block 1: xbat block 1 + // block 2: bat block 0 + // block 3: bat block 1 + // blocks 4-130: bat blocks 2-128, contained in xbat block 0 + // block 131: bat block 129, contained in xbat block 1 + // blocks 132-16639: fictitious blocks, faked out. All blocks + // whose index is evenly divisible by 256 + // will be unused + LocalRawDataBlockList list = new LocalRawDataBlockList(); + + list.createNewXBATBlock(4, 130, 1); + list.createNewXBATBlock(131, 131, -2); + for (int j = 0; j < 130; j++) + { + list.createNewBATBlock(j * 128); + } + list.fill(132); + int[] blocks = + { + 2, 3 + }; + BlockAllocationTableReader table = + new BlockAllocationTableReader(130, blocks, 2, 0, list); + + for (int i = 0; i < (130 * 128); i++) + { + if (i % 256 == 0) + { + assertTrue("verifying block " + i + " is unused", + !table.isUsed(i)); + } + else if (i % 256 == 255) + { + assertEquals("Verify end of chain for block " + i, + PoiFSConstants.END_OF_CHAIN, + table.getNextBlockIndex(i)); + } + else + { + assertEquals("Verify next index for block " + i, i + 1, + table.getNextBlockIndex(i)); + } + } + } + + /** + * Test fetchBlocks + * + * @exception IOException + */ + + public void testFetchBlocks() + throws IOException + { + + // strategy: + // + // 1. set up a single BAT block from which to construct a + // BAT. create nonsense blocks in the raw data block list + // corresponding to the indices in the BAT block. + // 2. The indices will include very short documents (0 and 1 + // block in length), longer documents, and some screwed up + // documents (one with a loop, one that will peek into + // another document's data, one that includes an unused + // document, one that includes a reserved (BAT) block, one + // that includes a reserved (XBAT) block, and one that + // points off into space somewhere + LocalRawDataBlockList list = new LocalRawDataBlockList(); + byte[] data = new byte[ 512 ]; + int offset = 0; + + LittleEndian.putInt(data, offset, -3); // for the BAT block itself + offset += LittleEndianConsts.INT_SIZE; + + // document 1: is at end of file already; start block = -2 + // document 2: has only one block; start block = 1 + LittleEndian.putInt(data, offset, -2); + offset += LittleEndianConsts.INT_SIZE; + + // document 3: has a loop in it; start block = 2 + LittleEndian.putInt(data, offset, 2); + offset += LittleEndianConsts.INT_SIZE; + + // document 4: peeks into document 2's data; start block = 3 + LittleEndian.putInt(data, offset, 4); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, 1); + offset += LittleEndianConsts.INT_SIZE; + + // document 5: includes an unused block; start block = 5 + LittleEndian.putInt(data, offset, 6); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, -1); + offset += LittleEndianConsts.INT_SIZE; + + // document 6: includes a BAT block; start block = 7 + LittleEndian.putInt(data, offset, 8); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, 0); + offset += LittleEndianConsts.INT_SIZE; + + // document 7: includes an XBAT block; start block = 9 + LittleEndian.putInt(data, offset, 10); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, -4); + offset += LittleEndianConsts.INT_SIZE; + + // document 8: goes off into space; start block = 11; + LittleEndian.putInt(data, offset, 1000); + offset += LittleEndianConsts.INT_SIZE; + + // document 9: no screw ups; start block = 12; + int index = 13; + + for (; offset < 508; offset += LittleEndianConsts.INT_SIZE) + { + LittleEndian.putInt(data, offset, index++); + } + LittleEndian.putInt(data, offset, -2); + list.add(new RawDataBlock(new ByteArrayInputStream(data))); + list.fill(1); + int[] blocks = + { + 0 + }; + BlockAllocationTableReader table = + new BlockAllocationTableReader(1, blocks, 0, -2, list); + int[] start_blocks = + { + -2, 1, 2, 3, 5, 7, 9, 11, 12 + }; + int[] expected_length = + { + 0, 1, -1, -1, -1, -1, -1, -1, 116 + }; + + for (int j = 0; j < start_blocks.length; j++) + { + try + { + ListManagedBlock[] dataBlocks = + table.fetchBlocks(start_blocks[ j ], list); + + if (expected_length[ j ] == -1) + { + fail("document " + j + " should have failed"); + } + else + { + assertEquals(expected_length[ j ], dataBlocks.length); + } + } + catch (IOException e) + { + if (expected_length[ j ] == -1) + { + + // no problem, we expected a failure here + } + else + { + throw e; + } + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.BlockAllocationTableReader"); + junit.textui.TestRunner.run(TestBlockAllocationTableReader.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java new file mode 100644 index 0000000000..c751f038b2 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java @@ -0,0 +1,231 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.common.PoiFSConstants; +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; + +/** + * Class to test BlockAllocationTableWriter functionality + * + * @author Marc Johnson + */ + +public class TestBlockAllocationTableWriter + extends TestCase +{ + + /** + * Constructor TestBlockAllocationTableWriter + * + * @param name + */ + + public TestBlockAllocationTableWriter(String name) + { + super(name); + } + + /** + * Test the allocateSpace method. + */ + + public void testAllocateSpace() + { + BlockAllocationTableWriter table = + new BlockAllocationTableWriter(); + int[] blockSizes = + { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 + }; + int expectedIndex = 0; + + for (int j = 0; j < blockSizes.length; j++) + { + assertEquals(expectedIndex, table.allocateSpace(blockSizes[ j ])); + expectedIndex += blockSizes[ j ]; + } + } + + /** + * Test the createBlocks method + * + * @exception IOException + */ + + public void testCreateBlocks() + throws IOException + { + BlockAllocationTableWriter table = new BlockAllocationTableWriter(); + + table.allocateSpace(127); + table.createBlocks(); + verifyBlocksCreated(table, 1); + table = new BlockAllocationTableWriter(); + table.allocateSpace(128); + table.createBlocks(); + verifyBlocksCreated(table, 2); + table = new BlockAllocationTableWriter(); + table.allocateSpace(254); + table.createBlocks(); + verifyBlocksCreated(table, 2); + table = new BlockAllocationTableWriter(); + table.allocateSpace(255); + table.createBlocks(); + verifyBlocksCreated(table, 3); + table = new BlockAllocationTableWriter(); + table.allocateSpace(13843); + table.createBlocks(); + verifyBlocksCreated(table, 109); + table = new BlockAllocationTableWriter(); + table.allocateSpace(13844); + table.createBlocks(); + verifyBlocksCreated(table, 110); + table = new BlockAllocationTableWriter(); + table.allocateSpace(13969); + table.createBlocks(); + verifyBlocksCreated(table, 110); + table = new BlockAllocationTableWriter(); + table.allocateSpace(13970); + table.createBlocks(); + verifyBlocksCreated(table, 111); + } + + /** + * Test content produced by BlockAllocationTableWriter + * + * @exception IOException + */ + + public void testProduct() + throws IOException + { + BlockAllocationTableWriter table = new BlockAllocationTableWriter(); + + for (int k = 1; k <= 22; k++) + { + table.allocateSpace(k); + } + table.createBlocks(); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + table.writeBlocks(stream); + byte[] output = stream.toByteArray(); + + assertEquals(1024, output.length); + byte[] expected = new byte[ 1024 ]; + + Arrays.fill(expected, ( byte ) 0xFF); + int offset = 0; + int block_index = 1; + + for (int k = 1; k <= 22; k++) + { + int limit = k - 1; + + for (int j = 0; j < limit; j++) + { + LittleEndian.putInt(expected, offset, block_index++); + offset += LittleEndianConsts.INT_SIZE; + } + LittleEndian.putInt(expected, offset, + PoiFSConstants.END_OF_CHAIN); + offset += 4; + block_index++; + } + + // add BAT block indices + LittleEndian.putInt(expected, offset, block_index++); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(expected, offset, PoiFSConstants.END_OF_CHAIN); + for (int k = 0; k < expected.length; k++) + { + assertEquals("At offset " + k, expected[ k ], output[ k ]); + } + } + + private void verifyBlocksCreated(BlockAllocationTableWriter table, + int count) + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + table.writeBlocks(stream); + byte[] output = stream.toByteArray(); + + assertEquals(count * 512, output.length); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.BlockAllocationTableWriter"); + junit.textui.TestRunner.run(TestBlockAllocationTableWriter.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java new file mode 100644 index 0000000000..dcd83fe0a8 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java @@ -0,0 +1,362 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; + +/** + * Class to test BlockListImpl functionality + * + * @author Marc Johnson + */ + +public class TestBlockListImpl + extends TestCase +{ + + /** + * Constructor TestBlockListImpl + * + * @param name + */ + + public TestBlockListImpl(String name) + { + super(name); + } + + /** + * test zap method + * + * @exception IOException + */ + + public void testZap() + throws IOException + { + BlockListImpl list = new BlockListImpl(); + + // verify that you can zap anything + for (int j = -2; j < 10; j++) + { + list.zap(j); + } + RawDataBlock[] blocks = new RawDataBlock[ 5 ]; + + for (int j = 0; j < 5; j++) + { + blocks[ j ] = + new RawDataBlock(new ByteArrayInputStream(new byte[ 512 ])); + } + list.setBlocks(blocks); + for (int j = -2; j < 10; j++) + { + list.zap(j); + } + + // verify that all blocks are gone + for (int j = 0; j < 5; j++) + { + try + { + list.remove(j); + fail("removing item " + j + " should not have succeeded"); + } + catch (IOException ignored) + { + } + } + } + + /** + * test remove method + * + * @exception IOException + */ + + public void testRemove() + throws IOException + { + BlockListImpl list = new BlockListImpl(); + RawDataBlock[] blocks = new RawDataBlock[ 5 ]; + byte[] data = new byte[ 512 * 5 ]; + + for (int j = 0; j < 5; j++) + { + Arrays.fill(data, j * 512, (j * 512) + 512, ( byte ) j); + } + ByteArrayInputStream stream = new ByteArrayInputStream(data); + + for (int j = 0; j < 5; j++) + { + blocks[ j ] = new RawDataBlock(stream); + } + list.setBlocks(blocks); + + // verify that you can't remove illegal indices + for (int j = -2; j < 10; j++) + { + if ((j < 0) || (j >= 5)) + { + try + { + list.remove(j); + fail("removing item " + j + " should have failed"); + } + catch (IOException ignored) + { + } + } + } + + // verify we can safely and correctly remove all blocks + for (int j = 0; j < 5; j++) + { + byte[] output = list.remove(j).getData(); + + for (int k = 0; k < 512; k++) + { + assertEquals("testing block " + j + ", index " + k, + data[ (j * 512) + k ], output[ k ]); + } + } + + // verify that all blocks are gone + for (int j = 0; j < 5; j++) + { + try + { + list.remove(j); + fail("removing item " + j + " should not have succeeded"); + } + catch (IOException ignored) + { + } + } + } + + /** + * test setBAT + * + * @exception IOException + */ + + public void testSetBAT() + throws IOException + { + BlockListImpl list = new BlockListImpl(); + + list.setBAT(null); + list.setBAT(new BlockAllocationTableReader()); + try + { + list.setBAT(new BlockAllocationTableReader()); + fail("second attempt should have failed"); + } + catch (IOException ignored) + { + } + } + + /** + * Test fetchBlocks + * + * @exception IOException + */ + + public void testFetchBlocks() + throws IOException + { + + // strategy: + // + // 1. set up a single BAT block from which to construct a + // BAT. create nonsense blocks in the raw data block list + // corresponding to the indices in the BAT block. + // 2. The indices will include very short documents (0 and 1 + // block in length), longer documents, and some screwed up + // documents (one with a loop, one that will peek into + // another document's data, one that includes an unused + // document, one that includes a reserved (BAT) block, one + // that includes a reserved (XBAT) block, and one that + // points off into space somewhere + BlockListImpl list = new BlockListImpl(); + List raw_blocks = new ArrayList(); + byte[] data = new byte[ 512 ]; + int offset = 0; + + LittleEndian.putInt(data, offset, -3); // for the BAT block itself + offset += LittleEndianConsts.INT_SIZE; + + // document 1: is at end of file already; start block = -2 + // document 2: has only one block; start block = 1 + LittleEndian.putInt(data, offset, -2); + offset += LittleEndianConsts.INT_SIZE; + + // document 3: has a loop in it; start block = 2 + LittleEndian.putInt(data, offset, 2); + offset += LittleEndianConsts.INT_SIZE; + + // document 4: peeks into document 2's data; start block = 3 + LittleEndian.putInt(data, offset, 4); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, 1); + offset += LittleEndianConsts.INT_SIZE; + + // document 5: includes an unused block; start block = 5 + LittleEndian.putInt(data, offset, 6); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, -1); + offset += LittleEndianConsts.INT_SIZE; + + // document 6: includes a BAT block; start block = 7 + LittleEndian.putInt(data, offset, 8); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, 0); + offset += LittleEndianConsts.INT_SIZE; + + // document 7: includes an XBAT block; start block = 9 + LittleEndian.putInt(data, offset, 10); + offset += LittleEndianConsts.INT_SIZE; + LittleEndian.putInt(data, offset, -4); + offset += LittleEndianConsts.INT_SIZE; + + // document 8: goes off into space; start block = 11; + LittleEndian.putInt(data, offset, 1000); + offset += LittleEndianConsts.INT_SIZE; + + // document 9: no screw ups; start block = 12; + int index = 13; + + for (; offset < 508; offset += LittleEndianConsts.INT_SIZE) + { + LittleEndian.putInt(data, offset, index++); + } + LittleEndian.putInt(data, offset, -2); + raw_blocks.add(new RawDataBlock(new ByteArrayInputStream(data))); + for (int j = raw_blocks.size(); j < 128; j++) + { + raw_blocks.add( + new RawDataBlock(new ByteArrayInputStream(new byte[ 0 ]))); + } + list.setBlocks(( RawDataBlock [] ) raw_blocks + .toArray(new RawDataBlock[ 0 ])); + int[] blocks = + { + 0 + }; + BlockAllocationTableReader table = + new BlockAllocationTableReader(1, blocks, 0, -2, list); + int[] start_blocks = + { + -2, 1, 2, 3, 5, 7, 9, 11, 12 + }; + int[] expected_length = + { + 0, 1, -1, -1, -1, -1, -1, -1, 116 + }; + + for (int j = 0; j < start_blocks.length; j++) + { + try + { + ListManagedBlock[] dataBlocks = + list.fetchBlocks(start_blocks[ j ]); + + if (expected_length[ j ] == -1) + { + fail("document " + j + " should have failed"); + } + else + { + assertEquals(expected_length[ j ], dataBlocks.length); + } + } + catch (IOException e) + { + if (expected_length[ j ] == -1) + { + + // no problem, we expected a failure here + } + else + { + throw e; + } + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.storage.BlockListImpl"); + junit.textui.TestRunner.run(TestBlockListImpl.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java new file mode 100644 index 0000000000..e346c8556a --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java @@ -0,0 +1,216 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +/** + * Class to test DocumentBlock functionality + * + * @author Marc Johnson + */ + +public class TestDocumentBlock + extends TestCase +{ + static final private byte[] _testdata; + + static + { + _testdata = new byte[ 2000 ]; + for (int j = 0; j < _testdata.length; j++) + { + _testdata[ j ] = ( byte ) j; + } + } + ; + + /** + * Constructor TestDocumentBlock + * + * @param name + */ + + public TestDocumentBlock(String name) + { + super(name); + } + + /** + * Test the writing DocumentBlock constructor. + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + ByteArrayInputStream input = new ByteArrayInputStream(_testdata); + int index = 0; + int size = 0; + + while (true) + { + byte[] data = new byte[ Math.min(_testdata.length - index, 512) ]; + + System.arraycopy(_testdata, index, data, 0, data.length); + DocumentBlock block = new DocumentBlock(input); + + verifyOutput(block, data); + size += block.size(); + if (block.partiallyRead()) + { + break; + } + index += 512; + } + assertEquals(_testdata.length, size); + } + + /** + * test static read method + * + * @exception IOException + */ + + public void testRead() + throws IOException + { + DocumentBlock[] blocks = new DocumentBlock[ 4 ]; + ByteArrayInputStream input = new ByteArrayInputStream(_testdata); + + for (int j = 0; j < 4; j++) + { + blocks[ j ] = new DocumentBlock(input); + } + for (int j = 1; j <= 2000; j += 17) + { + byte[] buffer = new byte[ j ]; + int offset = 0; + + for (int k = 0; k < (2000 / j); k++) + { + DocumentBlock.read(blocks, buffer, offset); + for (int n = 0; n < buffer.length; n++) + { + assertEquals("checking byte " + (k * j) + n, + _testdata[ (k * j) + n ], buffer[ n ]); + } + offset += j; + } + } + } + + /** + * Test 'reading' constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + RawDataBlock input = + new RawDataBlock(new ByteArrayInputStream(_testdata)); + + verifyOutput(new DocumentBlock(input), input.getData()); + } + + private void verifyOutput(DocumentBlock block, byte [] input) + throws IOException + { + assertEquals(input.length, block.size()); + if (input.length < 512) + { + assertTrue(block.partiallyRead()); + } + else + { + assertTrue(!block.partiallyRead()); + } + ByteArrayOutputStream output = new ByteArrayOutputStream(512); + + block.writeBlocks(output); + byte[] copy = output.toByteArray(); + int j = 0; + + for (; j < input.length; j++) + { + assertEquals(input[ j ], copy[ j ]); + } + for (; j < 512; j++) + { + assertEquals(( byte ) 0xFF, copy[ j ]); + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.storage.DocumentBlock"); + junit.textui.TestRunner.run(TestDocumentBlock.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java new file mode 100644 index 0000000000..e02ccd2e76 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java @@ -0,0 +1,283 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; + +/** + * Class to test HeaderBlockReader functionality + * + * @author Marc Johnson + */ + +public class TestHeaderBlockReader + extends TestCase +{ + + /** + * Constructor TestHeaderBlockReader + * + * @param name + */ + + public TestHeaderBlockReader(String name) + { + super(name); + } + + /** + * Test creating a HeaderBlockReader + * + * @exception IOException + */ + + public void testConstructors() + throws IOException + { + byte[] content = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + HeaderBlockReader block = + new HeaderBlockReader(new ByteArrayInputStream(content)); + + assertEquals(-2, block.getPropertyStart()); + + // verify we can't read a short block + byte[] shortblock = new byte[ 511 ]; + + System.arraycopy(content, 0, shortblock, 0, 511); + try + { + block = + new HeaderBlockReader(new ByteArrayInputStream(shortblock)); + fail("Should have caught IOException reading a short block"); + } + catch (IOException ignored) + { + + // as expected + } + + // try various forms of corruption + for (int index = 0; index < 8; index++) + { + content[ index ] = ( byte ) (content[ index ] - 1); + try + { + block = + new HeaderBlockReader(new ByteArrayInputStream(content)); + fail("Should have caught IOException corrupting byte " + + index); + } + catch (IOException ignored) + { + + // as expected + } + + // restore byte value + content[ index ] = ( byte ) (content[ index ] + 1); + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.HeaderBlockReader"); + junit.textui.TestRunner.run(TestHeaderBlockReader.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java new file mode 100644 index 0000000000..30a9f35c51 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java @@ -0,0 +1,1061 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianConsts; + +/** + * Class to test HeaderBlockWriter functionality + * + * @author Marc Johnson + */ + +public class TestHeaderBlockWriter + extends TestCase +{ + + /** + * Constructor TestHeaderBlockWriter + * + * @param name + */ + + public TestHeaderBlockWriter(String name) + { + super(name); + } + + /** + * Test creating a HeaderBlockWriter + * + * @exception IOException + */ + + public void testConstructors() + throws IOException + { + HeaderBlockWriter block = new HeaderBlockWriter(); + ByteArrayOutputStream output = new ByteArrayOutputStream(512); + + block.writeBlocks(output); + byte[] copy = output.toByteArray(); + byte[] expected = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + + assertEquals(expected.length, copy.length); + for (int j = 0; j < 512; j++) + { + assertEquals("testing byte " + j, expected[ j ], copy[ j ]); + } + + // verify we can read a 'good' HeaderBlockWriter (also test + // getPropertyStart) + block.setPropertyStart(0x87654321); + output = new ByteArrayOutputStream(512); + block.writeBlocks(output); + assertEquals(0x87654321, + new HeaderBlockReader(new ByteArrayInputStream(output + .toByteArray())).getPropertyStart()); + } + + /** + * Test setting the SBAT start block + * + * @exception IOException + */ + + public void testSetSBATStart() + throws IOException + { + HeaderBlockWriter block = new HeaderBlockWriter(); + + block.setSBATStart(0x01234567); + ByteArrayOutputStream output = new ByteArrayOutputStream(512); + + block.writeBlocks(output); + byte[] copy = output.toByteArray(); + byte[] expected = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + + assertEquals(expected.length, copy.length); + for (int j = 0; j < 512; j++) + { + assertEquals("testing byte " + j, expected[ j ], copy[ j ]); + } + } + + /** + * test setPropertyStart and getPropertyStart + * + * @exception IOException + */ + + public void testSetPropertyStart() + throws IOException + { + HeaderBlockWriter block = new HeaderBlockWriter(); + + block.setPropertyStart(0x01234567); + ByteArrayOutputStream output = new ByteArrayOutputStream(512); + + block.writeBlocks(output); + byte[] copy = output.toByteArray(); + byte[] expected = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + + assertEquals(expected.length, copy.length); + for (int j = 0; j < 512; j++) + { + assertEquals("testing byte " + j, expected[ j ], copy[ j ]); + } + } + + /** + * test setting the BAT blocks; also tests getBATCount, + * getBATArray, getXBATCount + * + * @exception IOException + */ + + public void testSetBATBlocks() + throws IOException + { + + // first, a small set of blocks + HeaderBlockWriter block = new HeaderBlockWriter(); + BATBlock[] xbats = block.setBATBlocks(5, 0x01234567); + + assertEquals(0, xbats.length); + assertEquals(0, HeaderBlockWriter + .calculateXBATStorageRequirements(5)); + ByteArrayOutputStream output = new ByteArrayOutputStream(512); + + block.writeBlocks(output); + byte[] copy = output.toByteArray(); + byte[] expected = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x68, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x69, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + + assertEquals(expected.length, copy.length); + for (int j = 0; j < 512; j++) + { + assertEquals("testing byte " + j, expected[ j ], copy[ j ]); + } + + // second, a full set of blocks (109 blocks) + block = new HeaderBlockWriter(); + xbats = block.setBATBlocks(109, 0x01234567); + assertEquals(0, xbats.length); + assertEquals(0, HeaderBlockWriter + .calculateXBATStorageRequirements(109)); + output = new ByteArrayOutputStream(512); + block.writeBlocks(output); + copy = output.toByteArray(); + byte[] expected2 = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x68, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x69, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x70, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x71, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x72, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x73, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x74, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x75, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x76, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x77, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x78, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x79, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x80, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x81, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x82, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x83, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x84, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x85, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x86, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x87, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x88, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x89, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x90, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x91, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x92, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x93, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x94, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x95, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x96, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x97, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x98, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x99, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01 + }; + + assertEquals(expected2.length, copy.length); + for (int j = 0; j < 512; j++) + { + assertEquals("testing byte " + j, expected2[ j ], copy[ j ]); + } + + // finally, a really large set of blocks (256 blocks) + block = new HeaderBlockWriter(); + xbats = block.setBATBlocks(256, 0x01234567); + assertEquals(2, xbats.length); + assertEquals(2, HeaderBlockWriter + .calculateXBATStorageRequirements(256)); + output = new ByteArrayOutputStream(512); + block.writeBlocks(output); + copy = output.toByteArray(); + byte[] expected3 = + { + ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0, + ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x46, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x68, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x69, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x6F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x70, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x71, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x72, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x73, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x74, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x75, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x76, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x77, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x78, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x79, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x7F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x80, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x81, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x82, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x83, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x84, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x85, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x86, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x87, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x88, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x89, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x8F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x90, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x91, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x92, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x93, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x94, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x95, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x96, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x97, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x98, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x99, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0x9F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xA9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xAF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xB9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xBF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xC9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xCF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01, + ( byte ) 0xD3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01 + }; + + assertEquals(expected3.length, copy.length); + for (int j = 0; j < 512; j++) + { + assertEquals("testing byte " + j, expected3[ j ], copy[ j ]); + } + output = new ByteArrayOutputStream(1028); + xbats[ 0 ].writeBlocks(output); + xbats[ 1 ].writeBlocks(output); + copy = output.toByteArray(); + int correct = 0x012345D4; + int offset = 0; + int k = 0; + + for (; k < 127; k++) + { + assertEquals("XBAT entry " + k, correct, + LittleEndian.getInt(copy, offset)); + correct++; + offset += LittleEndianConsts.INT_SIZE; + } + assertEquals("XBAT Chain", 0x01234567 + 257, + LittleEndian.getInt(copy, offset)); + offset += LittleEndianConsts.INT_SIZE; + k++; + for (; k < 148; k++) + { + assertEquals("XBAT entry " + k, correct, + LittleEndian.getInt(copy, offset)); + correct++; + offset += LittleEndianConsts.INT_SIZE; + } + for (; k < 255; k++) + { + assertEquals("XBAT entry " + k, -1, + LittleEndian.getInt(copy, offset)); + offset += LittleEndianConsts.INT_SIZE; + } + assertEquals("XBAT End of chain", -2, + LittleEndian.getInt(copy, offset)); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.HeaderBlockWriter"); + junit.textui.TestRunner.run(TestHeaderBlockWriter.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java new file mode 100644 index 0000000000..b931ee61c3 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java @@ -0,0 +1,275 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.Property; + +/** + * Class to test PropertyBlock functionality + * + * @author Marc Johnson + */ + +public class TestPropertyBlock + extends TestCase +{ + + /** + * Constructor TestPropertyBlock + * + * @param name + */ + + public TestPropertyBlock(String name) + { + super(name); + } + + /** + * Test constructing PropertyBlocks + * + * @exception IOException + */ + + public void testCreatePropertyBlocks() + throws IOException + { + + // test with 0 properties + List properties = new ArrayList(); + BlockWritable[] blocks = + PropertyBlock.createPropertyBlockArray(properties); + + assertEquals(0, blocks.length); + + // test with 1 property + properties.add(new LocalProperty("Root Entry")); + blocks = PropertyBlock.createPropertyBlockArray(properties); + assertEquals(1, blocks.length); + byte[] testblock = new byte[ 512 ]; + + for (int j = 0; j < 4; j++) + { + setDefaultBlock(testblock, j); + } + testblock[ 0x0000 ] = ( byte ) 'R'; + testblock[ 0x0002 ] = ( byte ) 'o'; + testblock[ 0x0004 ] = ( byte ) 'o'; + testblock[ 0x0006 ] = ( byte ) 't'; + testblock[ 0x0008 ] = ( byte ) ' '; + testblock[ 0x000A ] = ( byte ) 'E'; + testblock[ 0x000C ] = ( byte ) 'n'; + testblock[ 0x000E ] = ( byte ) 't'; + testblock[ 0x0010 ] = ( byte ) 'r'; + testblock[ 0x0012 ] = ( byte ) 'y'; + testblock[ 0x0040 ] = ( byte ) 22; + verifyCorrect(blocks, testblock); + + // test with 3 properties + properties.add(new LocalProperty("workbook")); + properties.add(new LocalProperty("summary")); + blocks = PropertyBlock.createPropertyBlockArray(properties); + assertEquals(1, blocks.length); + testblock[ 0x0080 ] = ( byte ) 'w'; + testblock[ 0x0082 ] = ( byte ) 'o'; + testblock[ 0x0084 ] = ( byte ) 'r'; + testblock[ 0x0086 ] = ( byte ) 'k'; + testblock[ 0x0088 ] = ( byte ) 'b'; + testblock[ 0x008A ] = ( byte ) 'o'; + testblock[ 0x008C ] = ( byte ) 'o'; + testblock[ 0x008E ] = ( byte ) 'k'; + testblock[ 0x00C0 ] = ( byte ) 18; + testblock[ 0x0100 ] = ( byte ) 's'; + testblock[ 0x0102 ] = ( byte ) 'u'; + testblock[ 0x0104 ] = ( byte ) 'm'; + testblock[ 0x0106 ] = ( byte ) 'm'; + testblock[ 0x0108 ] = ( byte ) 'a'; + testblock[ 0x010A ] = ( byte ) 'r'; + testblock[ 0x010C ] = ( byte ) 'y'; + testblock[ 0x0140 ] = ( byte ) 16; + verifyCorrect(blocks, testblock); + + // test with 4 properties + properties.add(new LocalProperty("wintery")); + blocks = PropertyBlock.createPropertyBlockArray(properties); + assertEquals(1, blocks.length); + testblock[ 0x0180 ] = ( byte ) 'w'; + testblock[ 0x0182 ] = ( byte ) 'i'; + testblock[ 0x0184 ] = ( byte ) 'n'; + testblock[ 0x0186 ] = ( byte ) 't'; + testblock[ 0x0188 ] = ( byte ) 'e'; + testblock[ 0x018A ] = ( byte ) 'r'; + testblock[ 0x018C ] = ( byte ) 'y'; + testblock[ 0x01C0 ] = ( byte ) 16; + verifyCorrect(blocks, testblock); + + // test with 5 properties + properties.add(new LocalProperty("foo")); + blocks = PropertyBlock.createPropertyBlockArray(properties); + assertEquals(2, blocks.length); + testblock = new byte[ 1024 ]; + for (int j = 0; j < 8; j++) + { + setDefaultBlock(testblock, j); + } + testblock[ 0x0000 ] = ( byte ) 'R'; + testblock[ 0x0002 ] = ( byte ) 'o'; + testblock[ 0x0004 ] = ( byte ) 'o'; + testblock[ 0x0006 ] = ( byte ) 't'; + testblock[ 0x0008 ] = ( byte ) ' '; + testblock[ 0x000A ] = ( byte ) 'E'; + testblock[ 0x000C ] = ( byte ) 'n'; + testblock[ 0x000E ] = ( byte ) 't'; + testblock[ 0x0010 ] = ( byte ) 'r'; + testblock[ 0x0012 ] = ( byte ) 'y'; + testblock[ 0x0040 ] = ( byte ) 22; + testblock[ 0x0080 ] = ( byte ) 'w'; + testblock[ 0x0082 ] = ( byte ) 'o'; + testblock[ 0x0084 ] = ( byte ) 'r'; + testblock[ 0x0086 ] = ( byte ) 'k'; + testblock[ 0x0088 ] = ( byte ) 'b'; + testblock[ 0x008A ] = ( byte ) 'o'; + testblock[ 0x008C ] = ( byte ) 'o'; + testblock[ 0x008E ] = ( byte ) 'k'; + testblock[ 0x00C0 ] = ( byte ) 18; + testblock[ 0x0100 ] = ( byte ) 's'; + testblock[ 0x0102 ] = ( byte ) 'u'; + testblock[ 0x0104 ] = ( byte ) 'm'; + testblock[ 0x0106 ] = ( byte ) 'm'; + testblock[ 0x0108 ] = ( byte ) 'a'; + testblock[ 0x010A ] = ( byte ) 'r'; + testblock[ 0x010C ] = ( byte ) 'y'; + testblock[ 0x0140 ] = ( byte ) 16; + testblock[ 0x0180 ] = ( byte ) 'w'; + testblock[ 0x0182 ] = ( byte ) 'i'; + testblock[ 0x0184 ] = ( byte ) 'n'; + testblock[ 0x0186 ] = ( byte ) 't'; + testblock[ 0x0188 ] = ( byte ) 'e'; + testblock[ 0x018A ] = ( byte ) 'r'; + testblock[ 0x018C ] = ( byte ) 'y'; + testblock[ 0x01C0 ] = ( byte ) 16; + testblock[ 0x0200 ] = ( byte ) 'f'; + testblock[ 0x0202 ] = ( byte ) 'o'; + testblock[ 0x0204 ] = ( byte ) 'o'; + testblock[ 0x0240 ] = ( byte ) 8; + verifyCorrect(blocks, testblock); + } + + private void setDefaultBlock(byte [] testblock, int j) + { + int base = j * 128; + int index = 0; + + for (; index < 0x40; index++) + { + testblock[ base++ ] = ( byte ) 0; + } + testblock[ base++ ] = ( byte ) 2; + testblock[ base++ ] = ( byte ) 0; + index += 2; + for (; index < 0x44; index++) + { + testblock[ base++ ] = ( byte ) 0; + } + for (; index < 0x50; index++) + { + testblock[ base++ ] = ( byte ) 0xff; + } + for (; index < 0x80; index++) + { + testblock[ base++ ] = ( byte ) 0; + } + } + + private void verifyCorrect(BlockWritable [] blocks, byte [] testblock) + throws IOException + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(512 + * blocks.length); + + for (int j = 0; j < blocks.length; j++) + { + blocks[ j ].writeBlocks(stream); + } + byte[] output = stream.toByteArray(); + + assertEquals(testblock.length, output.length); + for (int j = 0; j < testblock.length; j++) + { + assertEquals("mismatch at offset " + j, testblock[ j ], + output[ j ]); + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.storage.PropertyBlock"); + junit.textui.TestRunner.run(TestPropertyBlock.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java new file mode 100644 index 0000000000..3e508f5bc8 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java @@ -0,0 +1,176 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import junit.framework.*; + +/** + * Class to test RawDataBlock functionality + * + * @author Marc Johnson + */ + +public class TestRawDataBlock + extends TestCase +{ + + /** + * Constructor TestRawDataBlock + * + * @param name + */ + + public TestRawDataBlock(String name) + { + super(name); + } + + /** + * Test creating a normal RawDataBlock + * + * @exception IOException + */ + + public void testNormalConstructor() + throws IOException + { + byte[] data = new byte[ 512 ]; + + for (int j = 0; j < 512; j++) + { + data[ j ] = ( byte ) j; + } + RawDataBlock block = new RawDataBlock(new ByteArrayInputStream(data)); + + assertTrue("Should not be at EOF", !block.eof()); + byte[] out_data = block.getData(); + + assertEquals("Should be same length", data.length, out_data.length); + for (int j = 0; j < 512; j++) + { + assertEquals("Should be same value at offset " + j, data[ j ], + out_data[ j ]); + } + } + + /** + * Test creating an empty RawDataBlock + * + * @exception IOException + */ + + public void testEmptyConstructor() + throws IOException + { + byte[] data = new byte[ 0 ]; + RawDataBlock block = new RawDataBlock(new ByteArrayInputStream(data)); + + assertTrue("Should be at EOF", block.eof()); + try + { + block.getData(); + } + catch (IOException ignored) + { + + // as expected + } + } + + /** + * Test creating a short RawDataBlock + */ + + public void testShortConstructor() + { + for (int k = 1; k < 512; k++) + { + byte[] data = new byte[ k ]; + + for (int j = 0; j < k; j++) + { + data[ j ] = ( byte ) j; + } + RawDataBlock block = null; + + try + { + block = new RawDataBlock(new ByteArrayInputStream(data)); + fail("Should have thrown IOException creating short block"); + } + catch (IOException ignored) + { + + // as expected + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.storage.RawDataBlock"); + junit.textui.TestRunner.run(TestRawDataBlock.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java new file mode 100644 index 0000000000..ef6114c55c --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java @@ -0,0 +1,152 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import junit.framework.*; + +/** + * Class to test RawDataBlockList functionality + * + * @author Marc Johnson + */ + +public class TestRawDataBlockList + extends TestCase +{ + + /** + * Constructor TestRawDataBlockList + * + * @param name + */ + + public TestRawDataBlockList(String name) + { + super(name); + } + + /** + * Test creating a normal RawDataBlockList + * + * @exception IOException + */ + + public void testNormalConstructor() + throws IOException + { + byte[] data = new byte[ 2560 ]; + + for (int j = 0; j < 2560; j++) + { + data[ j ] = ( byte ) j; + } + new RawDataBlockList(new ByteArrayInputStream(data)); + } + + /** + * Test creating an empty RawDataBlockList + * + * @exception IOException + */ + + public void testEmptyConstructor() + throws IOException + { + new RawDataBlockList(new ByteArrayInputStream(new byte[ 0 ])); + } + + /** + * Test creating a short RawDataBlockList + */ + + public void testShortConstructor() + { + for (int k = 2049; k < 2560; k++) + { + byte[] data = new byte[ k ]; + + for (int j = 0; j < k; j++) + { + data[ j ] = ( byte ) j; + } + try + { + new RawDataBlockList(new ByteArrayInputStream(data)); + fail("Should have thrown IOException creating short block"); + } + catch (IOException ignored) + { + + // as expected + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out + .println("Testing org.apache.poi.poifs.storage.RawDataBlockList"); + junit.textui.TestRunner.run(TestRawDataBlockList.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java new file mode 100644 index 0000000000..9289865acc --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java @@ -0,0 +1,2181 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.property.PropertyTable; +import org.apache.poi.poifs.property.RootProperty; + +/** + * Class to test SmallBlockTableReader functionality + * + * @author Marc Johnson + */ + +public class TestSmallBlockTableReader + extends TestCase +{ + + /** + * Constructor TestSmallBlockTableReader + * + * @param name + */ + + public TestSmallBlockTableReader(String name) + { + super(name); + } + + /** + * test reading constructor + * + * @exception IOException + */ + + public void testReadingConstructor() + throws IOException + { + + // first, we need the raw data blocks + byte[] raw_data_array = + { + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x80, ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x3C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4A, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x59, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00, + ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00, + ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00, + ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00, + ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00, + ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00, + ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00, + ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00, + ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00, + ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00, + ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00, + ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00, + ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00, + ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x1D, ( byte ) 0x00, + ( byte ) 0x28, ( byte ) 0x41, ( byte ) 0x29, ( byte ) 0x31, + ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, + ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, + ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x20, ( byte ) 0x74, + ( byte ) 0x6F, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x36, + ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74, + ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30, + ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x18, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00, + ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65, + ( byte ) 0x73, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, + ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00, + ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, + ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF + }; + RawDataBlockList data_blocks = + new RawDataBlockList(new ByteArrayInputStream(raw_data_array)); + int[] bat_array = + { + 15 + }; + + // need to initialize the block list with a block allocation + // table + new BlockAllocationTableReader(1, bat_array, 0, -2, data_blocks); + + // get property table from the document + PropertyTable properties = new PropertyTable(0, data_blocks); + RootProperty root = properties.getRoot(); + BlockList bl = + SmallBlockTableReader.getSmallDocumentBlocks(data_blocks, root, + 14); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.SmallBlockTableReader"); + junit.textui.TestRunner.run(TestSmallBlockTableReader.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java new file mode 100644 index 0000000000..fa3ae504d3 --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java @@ -0,0 +1,165 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +import org.apache.poi.poifs.filesystem.POIFSDocument; +import org.apache.poi.poifs.property.PropertyTable; +import org.apache.poi.poifs.property.RootProperty; + +/** + * Class to test SmallBlockTableWriter functionality + * + * @author Marc Johnson + */ + +public class TestSmallBlockTableWriter + extends TestCase +{ + + /** + * Constructor TestSmallBlockTableWriter + * + * @param name + */ + + public TestSmallBlockTableWriter(String name) + { + super(name); + } + + /** + * test writing constructor + * + * @exception IOException + */ + + public void testWritingConstructor() + throws IOException + { + List documents = new ArrayList(); + + documents.add( + new POIFSDocument( + "doc340", new ByteArrayInputStream(new byte[ 340 ]))); + documents.add( + new POIFSDocument( + "doc5000", new ByteArrayInputStream(new byte[ 5000 ]))); + documents + .add(new POIFSDocument("doc0", + new ByteArrayInputStream(new byte[ 0 ]))); + documents + .add(new POIFSDocument("doc1", + new ByteArrayInputStream(new byte[ 1 ]))); + documents + .add(new POIFSDocument("doc2", + new ByteArrayInputStream(new byte[ 2 ]))); + documents + .add(new POIFSDocument("doc3", + new ByteArrayInputStream(new byte[ 3 ]))); + documents + .add(new POIFSDocument("doc4", + new ByteArrayInputStream(new byte[ 4 ]))); + documents + .add(new POIFSDocument("doc5", + new ByteArrayInputStream(new byte[ 5 ]))); + documents + .add(new POIFSDocument("doc6", + new ByteArrayInputStream(new byte[ 6 ]))); + documents + .add(new POIFSDocument("doc7", + new ByteArrayInputStream(new byte[ 7 ]))); + documents + .add(new POIFSDocument("doc8", + new ByteArrayInputStream(new byte[ 8 ]))); + documents + .add(new POIFSDocument("doc9", + new ByteArrayInputStream(new byte[ 9 ]))); + RootProperty root = new PropertyTable().getRoot(); + SmallBlockTableWriter sbtw = new SmallBlockTableWriter(documents, + root); + BlockAllocationTableWriter bat = sbtw.getSBAT(); + + // 15 small blocks: 6 for doc340, 0 for doc5000 (too big), 0 + // for doc0 (no storage needed), 1 each for doc1 through doc9 + assertEquals(15 * 64, root.getSize()); + + // 15 small blocks rounds up to 2 big blocks + assertEquals(2, sbtw.countBlocks()); + int start_block = 1000 + root.getStartBlock(); + + sbtw.setStartBlock(start_block); + assertEquals(start_block, root.getStartBlock()); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.SmallBlockTableWriter"); + junit.textui.TestRunner.run(TestSmallBlockTableWriter.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java new file mode 100644 index 0000000000..6176e5152b --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java @@ -0,0 +1,346 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import java.util.*; + +import junit.framework.*; + +/** + * Class to test SmallDocumentBlock functionality + * + * @author Marc Johnson + */ + +public class TestSmallDocumentBlock + extends TestCase +{ + static final private byte[] _testdata; + static final private int _testdata_size = 2999; + + static + { + _testdata = new byte[ _testdata_size ]; + for (int j = 0; j < _testdata.length; j++) + { + _testdata[ j ] = ( byte ) j; + } + } + ; + + /** + * constructor + * + * @param name + */ + + public TestSmallDocumentBlock(String name) + { + super(name); + } + + /** + * Test conversion from DocumentBlocks + * + * @exception IOException + */ + + public void testConvert1() + throws IOException + { + ByteArrayInputStream stream = new ByteArrayInputStream(_testdata); + List documents = new ArrayList(); + + while (true) + { + DocumentBlock block = new DocumentBlock(stream); + + documents.add(block); + if (block.partiallyRead()) + { + break; + } + } + SmallDocumentBlock[] results = + SmallDocumentBlock + .convert(( BlockWritable [] ) documents + .toArray(new DocumentBlock[ 0 ]), _testdata_size); + + assertEquals("checking correct result size: ", + (_testdata_size + 63) / 64, results.length); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + + for (int j = 0; j < results.length; j++) + { + results[ j ].writeBlocks(output); + } + byte[] output_array = output.toByteArray(); + + assertEquals("checking correct output size: ", 64 * results.length, + output_array.length); + int index = 0; + + for (; index < _testdata_size; index++) + { + assertEquals("checking output " + index, _testdata[ index ], + output_array[ index ]); + } + for (; index < output_array.length; index++) + { + assertEquals("checking output " + index, ( byte ) 0xff, + output_array[ index ]); + } + } + + /** + * Test conversion from byte array + * + * @exception IOException; + * + * @exception IOException + */ + + public void testConvert2() + throws IOException + { + for (int j = 0; j < 320; j++) + { + byte[] array = new byte[ j ]; + + for (int k = 0; k < j; k++) + { + array[ k ] = ( byte ) k; + } + SmallDocumentBlock[] blocks = SmallDocumentBlock.convert(array, + 319); + + assertEquals(5, blocks.length); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + for (int k = 0; k < blocks.length; k++) + { + blocks[ k ].writeBlocks(stream); + } + stream.close(); + byte[] output = stream.toByteArray(); + + for (int k = 0; k < array.length; k++) + { + assertEquals(String.valueOf(k), array[ k ], output[ k ]); + } + for (int k = array.length; k < 320; k++) + { + assertEquals(String.valueOf(k), ( byte ) 0xFF, output[ k ]); + } + } + } + + /** + * Test read method + * + * @exception IOException + */ + + public void testRead() + throws IOException + { + ByteArrayInputStream stream = new ByteArrayInputStream(_testdata); + List documents = new ArrayList(); + + while (true) + { + DocumentBlock block = new DocumentBlock(stream); + + documents.add(block); + if (block.partiallyRead()) + { + break; + } + } + SmallDocumentBlock[] blocks = + SmallDocumentBlock + .convert(( BlockWritable [] ) documents + .toArray(new DocumentBlock[ 0 ]), _testdata_size); + + for (int j = 1; j <= _testdata_size; j += 38) + { + byte[] buffer = new byte[ j ]; + int offset = 0; + + for (int k = 0; k < (_testdata_size / j); k++) + { + SmallDocumentBlock.read(blocks, buffer, offset); + for (int n = 0; n < buffer.length; n++) + { + assertEquals("checking byte " + (k * j) + n, + _testdata[ (k * j) + n ], buffer[ n ]); + } + offset += j; + } + } + } + + /** + * test fill + * + * @exception IOException + */ + + public void testFill() + throws IOException + { + for (int j = 0; j <= 8; j++) + { + List foo = new ArrayList(); + + for (int k = 0; k < j; k++) + { + foo.add(new Object()); + } + int result = SmallDocumentBlock.fill(foo); + + assertEquals("correct big block count: ", (j + 7) / 8, result); + assertEquals("correct small block count: ", 8 * result, + foo.size()); + for (int m = j; m < foo.size(); m++) + { + BlockWritable block = ( BlockWritable ) foo.get(m); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + block.writeBlocks(stream); + byte[] output = stream.toByteArray(); + + assertEquals("correct output size (block[ " + m + " ]): ", + 64, output.length); + for (int n = 0; n < 64; n++) + { + assertEquals("correct value (block[ " + m + " ][ " + n + + " ]): ", ( byte ) 0xff, output[ n ]); + } + } + } + } + + /** + * test calcSize + */ + + public void testCalcSize() + { + for (int j = 0; j < 10; j++) + { + assertEquals("testing " + j, j * 64, + SmallDocumentBlock.calcSize(j)); + } + } + + /** + * test extract method + * + * @exception IOException + */ + + public void testExtract() + throws IOException + { + byte[] data = new byte[ 512 ]; + int offset = 0; + + for (int j = 0; j < 8; j++) + { + for (int k = 0; k < 64; k++) + { + data[ offset++ ] = ( byte ) (k + j); + } + } + RawDataBlock[] blocks = + { + new RawDataBlock(new ByteArrayInputStream(data)) + }; + List output = SmallDocumentBlock.extract(blocks); + Iterator iter = output.iterator(); + + offset = 0; + while (iter.hasNext()) + { + byte[] out_data = (( SmallDocumentBlock ) iter.next()).getData(); + + assertEquals("testing block at offset " + offset, 64, + out_data.length); + for (int j = 0; j < out_data.length; j++) + { + assertEquals("testing byte at offset " + offset, + data[ offset ], out_data[ j ]); + offset++; + } + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.SmallDocumentBlock"); + junit.textui.TestRunner.run(TestSmallDocumentBlock.class); + } +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java new file mode 100644 index 0000000000..02c3e7013f --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java @@ -0,0 +1,137 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.poifs.storage; + +import java.io.*; + +import junit.framework.*; + +/** + * Class to test SmallDocumentBlockList functionality + * + * @author Marc Johnson + */ + +public class TestSmallDocumentBlockList + extends TestCase +{ + + /** + * Constructor TestSmallDocumentBlockList + * + * @param name + */ + + public TestSmallDocumentBlockList(String name) + { + super(name); + } + + /** + * Test creating a SmallDocumentBlockList + * + * @exception IOException + */ + + public void testConstructor() + throws IOException + { + byte[] data = new byte[ 2560 ]; + + for (int j = 0; j < 2560; j++) + { + data[ j ] = ( byte ) j; + } + ByteArrayInputStream stream = new ByteArrayInputStream(data); + RawDataBlock[] blocks = new RawDataBlock[ 5 ]; + + for (int j = 0; j < 5; j++) + { + blocks[ j ] = new RawDataBlock(stream); + } + SmallDocumentBlockList sdbl = + new SmallDocumentBlockList(SmallDocumentBlock.extract(blocks)); + + // proof we added the blocks + for (int j = 0; j < 40; j++) + { + sdbl.remove(j); + } + try + { + sdbl.remove(41); + fail("there should have been an Earth-shattering ka-boom!"); + } + catch (IOException ignored) + { + + // it better have thrown one!! + } + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println( + "Testing org.apache.poi.poifs.storage.SmallDocumentBlockList"); + junit.textui.TestRunner.run(TestSmallDocumentBlockList.class); + } +} diff --git a/src/testcases/org/apache/poi/util/LocalTestNode.java b/src/testcases/org/apache/poi/util/LocalTestNode.java new file mode 100644 index 0000000000..85dba033cc --- /dev/null +++ b/src/testcases/org/apache/poi/util/LocalTestNode.java @@ -0,0 +1,164 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +class LocalTestNode + implements Comparable +{ + private Comparable _key; + private Comparable _value; + + /** + * construct a LocalTestNode + * + * @param key value used to create the key and value + */ + + LocalTestNode(final int key) + { + _key = new Integer(key); + _value = String.valueOf(key); + } + + /** + * @param key the unique key associated with the current node. + */ + + void setKey(Comparable key) + { + _key = key; + } + + /** + * @return the unique key associated with the current node + */ + + Comparable getKey() + { + return _key; + } + + /** + * @param value the unique value associated with the current node. + */ + + void setValue(Comparable value) + { + _value = value; + } + + /** + * @return the unique value associated with the current node + */ + + Comparable getValue() + { + return _value; + } + + /** + * Method compareTo + * + * @param o + * + * @return + */ + + public int compareTo(Object o) + { + LocalTestNode other = ( LocalTestNode ) o; + int rval = getKey().compareTo(other.getKey()); + + if (rval == 0) + { + rval = getValue().compareTo(other.getValue()); + } + return rval; + } + + /** + * Method equals + * + * @param o + * + * @return true if equal + */ + + public boolean equals(Object o) + { + if (o == null) + { + return false; + } + if (!(o.getClass().equals(this.getClass()))) + { + return false; + } + LocalTestNode node = ( LocalTestNode ) o; + + return (getKey().equals(node.getKey()) + && getValue().equals(node.getValue())); + } + + /** + * @return hash code + */ + + public int hashCode() + { + return getKey().hashCode() ^ getValue().hashCode(); + } +} diff --git a/src/testcases/org/apache/poi/util/TestBinaryTree.java b/src/testcases/org/apache/poi/util/TestBinaryTree.java new file mode 100644 index 0000000000..238eb7c42f --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestBinaryTree.java @@ -0,0 +1,2815 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.util.*; + +/** + * Class TestBinaryTree + * + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestBinaryTree + extends TestCase +{ + + /** + * constructor + * + * @param name + */ + + public TestBinaryTree(final String name) + { + super(name); + } + + /** + * test size() method + */ + + public void testSize() + { + Map m = new BinaryTree(); + + assertEquals(0, m.size()); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ].getValue()); + assertEquals(k + 1, m.size()); + } + int count = m.size(); + + for (int k = 0; k < nodes.length; k++) + { + m.remove(nodes[ k ].getKey()); + --count; + assertEquals(count, m.size()); + + // failed remove should not affect size + m.remove(nodes[ k ].getKey()); + assertEquals(count, m.size()); + } + } + + /** + * test IsEmpty() method + */ + + public void testIsEmpty() + { + Map m = new BinaryTree(); + + assertTrue(m.isEmpty()); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ].getValue()); + assertTrue(!m.isEmpty()); + } + int count = m.size(); + + for (int k = 0; k < nodes.length; k++) + { + m.remove(nodes[ k ].getKey()); + --count; + if (count == 0) + { + assertTrue(m.isEmpty()); + } + else + { + assertTrue(!m.isEmpty()); + } + + // failed remove should not affect emptiness + m.remove(nodes[ k ].getKey()); + if (count == 0) + { + assertTrue(m.isEmpty()); + } + else + { + assertTrue(!m.isEmpty()); + } + } + } + + /** + * test containsKey() method + */ + + public void testContainsKey() + { + Map m = new BinaryTree(); + + try + { + m.containsKey(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + try + { + m.containsKey(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + assertTrue(!m.containsKey("foo")); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + assertTrue(m.containsKey(nodes[ k ].getKey())); + } + assertTrue(!m.containsKey(new Integer(-1))); + try + { + m.containsKey("foo"); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + m.remove(nodes[ k ].getKey()); + assertTrue(!m.containsKey(nodes[ k ].getKey())); + } + } + + /** + * test containsValue() method + */ + + public void testContainsValue() + { + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + assertTrue(m.containsValue(nodes[ k ])); + } + for (int k = 0; k < nodes.length; k++) + { + m.remove(nodes[ k ].getKey()); + assertTrue(!m.containsValue(nodes[ k ])); + } + } + + /** + * test get() method + */ + + public void testGet() + { + Map m = new BinaryTree(); + + try + { + m.get(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + try + { + m.get(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + assertNull(m.get("foo")); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + assertSame(m.get(nodes[ k ].getKey()), nodes[ k ]); + } + assertNull(m.get(new Integer(-1))); + try + { + m.get("foo"); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + assertNotNull(m.get(nodes[ k ].getKey())); + m.remove(nodes[ k ].getKey()); + assertNull(m.get(nodes[ k ].getKey())); + } + } + + /** + * test put() method + */ + + public void testPut() + { + Map m = new BinaryTree(); + + try + { + m.put(new Object(), "foo"); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + try + { + m.put(null, "foo"); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + m.put("foo", null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + m.put("foo", new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + LocalTestNode[] nodes = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + assertNull(m.put(nodes[ k ].getKey(), nodes[ k ].getValue())); + try + { + m.put(nodes[ k ].getKey(), "foo"); + } + catch (IllegalArgumentException ignored) + { + } + } + } + + /** + * test remove() method + */ + + public void testRemove() + { + BinaryTree m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + try + { + m.remove(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + m.remove(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + assertNull(m.remove(new Integer(-1))); + try + { + m.remove("foo"); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k += 2) + { + Comparable key = nodes[ k ].getKey(); + + assertNotNull(m.get(key)); + assertSame(nodes[ k ], m.remove(key)); + assertNull(m.remove(key)); + assertNull(m.get(key)); + } + for (int k = 1; k < nodes.length; k += 2) + { + Comparable key = nodes[ k ].getKey(); + + assertNotNull(m.get(key)); + assertSame(nodes[ k ], m.remove(key)); + assertNull(m.remove(key)); + assertNull(m.get(key)); + } + assertTrue(m.isEmpty()); + } + + /** + * Method testPutAll + */ + + public void testPutAll() + { + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + Map m1 = new HashMap(); + + m1.put(null, "foo"); + try + { + m.putAll(m1); + fail("Should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + m1 = new HashMap(); + m1.put(new Object(), "bar"); + try + { + m.putAll(m1); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + m1 = new HashMap(); + m1.put("fubar", null); + try + { + m.putAll(m1); + fail("Should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + m1 = new HashMap(); + m1.put("fubar", new Object()); + try + { + m.putAll(m1); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + m1 = new HashMap(); + for (int k = 0; k < nodes.length; k++) + { + m1.put(nodes[ k ].getKey(), nodes[ k ].getValue()); + } + m.putAll(m1); + assertEquals(nodes.length, m.size()); + for (int k = 0; k < nodes.length; k++) + { + assertSame(nodes[ k ].getValue(), m.get(nodes[ k ].getKey())); + } + } + + /** + * test clear() method + */ + + public void testClear() + { + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ].getValue()); + assertTrue(!m.isEmpty()); + } + assertTrue(!m.isEmpty()); + for (int k = 0; k < nodes.length; k++) + { + assertTrue(m.containsKey(nodes[ k ].getKey())); + assertTrue(m.containsValue(nodes[ k ].getValue())); + } + m.clear(); + assertTrue(m.isEmpty()); + for (int k = 0; k < nodes.length; k++) + { + assertTrue(!m.containsKey(nodes[ k ].getKey())); + assertTrue(!m.containsValue(nodes[ k ].getValue())); + } + } + + /** + * test keySet() method + */ + + public void testKeySet() + { + testKeySet(new BinaryTree()); + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + testKeySet(m); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + int count = m.size(); + + for (Iterator iter = m.keySet().iterator(); iter.hasNext(); ) + { + iter.next(); + iter.remove(); + --count; + assertEquals(count, m.size()); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + Set s = m.keySet(); + + try + { + s.remove(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + s.remove(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + Comparable key = nodes[ k ].getKey(); + + assertTrue(s.remove(key)); + assertTrue(!s.contains(key)); + assertTrue(!m.containsKey(key)); + assertTrue(!m.containsValue(nodes[ k ])); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + Collection c1 = new LinkedList(); + Collection c2 = new LinkedList(); + + c2.add(new Integer(-99)); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + c2.add(nodes[ k ].getKey()); + } + assertTrue(m.keySet().containsAll(c1)); + assertTrue(!m.keySet().containsAll(c2)); + m = new BinaryTree(); + c1 = new LinkedList(); + c1.add(new Integer(-55)); + try + { + m.keySet().addAll(c1); + fail("should have caught exception of addAll()"); + } + catch (UnsupportedOperationException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + } + assertTrue(!m.keySet().retainAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 1) + { + c1.add(nodes[ k ].getKey()); + } + } + assertTrue(m.keySet().retainAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(m.keySet().retainAll(c1)); + assertEquals(0, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(!m.keySet().removeAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 0) + { + c1.add(nodes[ k ].getKey()); + } + } + assertTrue(m.keySet().removeAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + } + assertTrue(m.keySet().removeAll(c1)); + assertTrue(m.size() == 0); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + m.keySet().clear(); + assertTrue(m.size() == 0); + } + + /** + * test values() method + */ + + public void testValues() + { + testValues(new BinaryTree()); + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + testValues(m); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + int count = m.size(); + + for (Iterator iter = m.values().iterator(); iter.hasNext(); ) + { + iter.next(); + iter.remove(); + --count; + assertEquals(count, m.size()); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + count = m.size(); + Collection s = m.values(); + + for (int k = 0; k < count; k++) + { + assertTrue(s.remove(nodes[ k ])); + assertTrue(!s.contains(nodes[ k ])); + assertTrue(!m.containsKey(nodes[ k ].getKey())); + assertTrue(!m.containsValue(nodes[ k ])); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + Collection c1 = new LinkedList(); + Collection c2 = new LinkedList(); + + c2.add(new LocalTestNode(-123)); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + c2.add(nodes[ k ]); + } + assertTrue(m.values().containsAll(c1)); + assertTrue(!m.values().containsAll(c2)); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + } + try + { + m.values().addAll(c1); + fail("should have caught exception of addAll()"); + } + catch (UnsupportedOperationException ignored) + { + } + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + } + assertTrue(!m.values().retainAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 1) + { + c1.add(nodes[ k ]); + } + } + assertTrue(m.values().retainAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(m.values().retainAll(c1)); + assertEquals(0, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(!m.values().removeAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 0) + { + c1.add(nodes[ k ]); + } + } + assertTrue(m.values().removeAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + } + assertTrue(m.values().removeAll(c1)); + assertEquals(0, m.size()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + m.values().clear(); + assertEquals(0, m.size()); + } + + /** + * test entrySet() method + */ + + public void testEntrySet() + { + testEntrySet(new BinaryTree()); + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + testEntrySet(m); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + try + { + (( Map.Entry ) m.entrySet().iterator().next()) + .setValue(new LocalTestNode(-1)); + fail("Should have caught UnsupportedOperationException"); + } + catch (UnsupportedOperationException ignored) + { + } + int count = m.size(); + + for (Iterator iter = m.entrySet().iterator(); iter.hasNext(); ) + { + iter.next(); + iter.remove(); + --count; + assertEquals(count, m.size()); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + Collection c1 = new LinkedList(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + } + try + { + m.entrySet().addAll(c1); + fail("should have caught exception of addAll()"); + } + catch (UnsupportedOperationException ignored) + { + } + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + m.entrySet().clear(); + assertEquals(0, m.size()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + int x = 0; + + for (Iterator iter = m.entrySet().iterator(); iter.hasNext(); ) + { + Map.Entry entry = ( Map.Entry ) iter.next(); + + assertSame(entry.getKey(), nodes[ x ].getKey()); + assertSame(entry.getValue(), nodes[ x ]); + x++; + } + } + + /** + * Method testEquals + */ + + public void testEquals() + { + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(!m.equals(null)); + assertEquals(m, m); + Map m1 = new HashMap(); + + for (int k = 0; k < nodes.length; k++) + { + m1.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertEquals(m, m1); + m1 = new BinaryTree(); + for (int k = 0; k < (nodes.length - 1); k++) + { + m1.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(!m.equals(m1)); + m1 = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m1.put(nodes[ k ].getKey(), nodes[ k ]); + } + LocalTestNode node1 = new LocalTestNode(-1000); + + m1.put(node1.getKey(), node1); + assertTrue(!m.equals(m1)); + m1 = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m1.put(nodes[ k ].getKey(), nodes[ nodes.length - (k + 1) ]); + } + assertTrue(!m.equals(m1)); + m1 = new BinaryTree(); + for (int k = nodes.length - 1; k >= 0; k--) + { + m1.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertEquals(m, m1); + } + + /** + * test hashCode() method + */ + + public void testHashCode() + { + Map m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + Map m1 = new BinaryTree(); + + for (int k = nodes.length - 1; k >= 0; k--) + { + m1.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(m.hashCode() == m1.hashCode()); + } + + /** + * test constructors + */ + + public void testConstructors() + { + BinaryTree m = new BinaryTree(); + + assertTrue(m.isEmpty()); + BinaryTree m1 = new BinaryTree(m); + + assertTrue(m1.isEmpty()); + m1 = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m1.put(nodes[ k ].getKey(), nodes[ k ]); + } + m = new BinaryTree(m1); + assertEquals(m, m1); + Map m2 = new HashMap(); + + for (int k = 0; k < nodes.length; k++) + { + m2.put(nodes[ k ].getKey(), nodes[ k ]); + } + m = new BinaryTree(m2); + assertEquals(m, m2); + + // reject duplicated values + m2 = new HashMap(); + m2.put("1", "foo"); + m2.put("2", "foo"); + try + { + m = new BinaryTree(m2); + fail("Should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + } + + // reject null values + m2.put("2", null); + try + { + m = new BinaryTree(m2); + fail("Should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + + // reject non-Comparable values + m2.put("2", new Object()); + try + { + m = new BinaryTree(m2); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + + // reject incompatible values + m2.put("2", new Integer(2)); + try + { + m = new BinaryTree(m2); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + + // reject incompatible keys + m2.remove("2"); + m2.put(new Integer(2), "bad key"); + try + { + m = new BinaryTree(m2); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + + // reject non-Comparable keys + m2.clear(); + m2.put("1", "foo"); + m2.put(new Object(), "bad key"); + try + { + m = new BinaryTree(m2); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + } + + /** + * test getKeyForValue() method + */ + + public void testGetKeyForValue() + { + BinaryTree m = new BinaryTree(); + + try + { + m.getKeyForValue(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + try + { + m.getKeyForValue(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + assertNull(m.getKeyForValue("foo")); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + assertSame(m.getKeyForValue(nodes[ k ]), nodes[ k ].getKey()); + } + assertNull(m.getKeyForValue(new LocalTestNode(-1))); + try + { + m.getKeyForValue("foo"); + fail("Should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + assertNotNull(m.getKeyForValue(nodes[ k ])); + m.remove(nodes[ k ].getKey()); + assertNull(m.getKeyForValue(nodes[ k ])); + } + } + + /** + * test removeValue() method + */ + + public void testRemoveValue() + { + BinaryTree m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + try + { + m.removeValue(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + m.removeValue(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + assertNull(m.remove(new Integer(-1))); + try + { + m.removeValue("foo"); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k += 2) + { + assertNotNull(m.getKeyForValue(nodes[ k ])); + assertSame(nodes[ k ].getKey(), m.removeValue(nodes[ k ])); + assertNull(m.removeValue(nodes[ k ])); + assertNull(m.getKeyForValue(nodes[ k ])); + } + for (int k = 1; k < nodes.length; k += 2) + { + assertNotNull(m.getKeyForValue(nodes[ k ])); + assertSame(nodes[ k ].getKey(), m.removeValue(nodes[ k ])); + assertNull(m.removeValue(nodes[ k ])); + assertNull(m.getKeyForValue(nodes[ k ])); + } + assertTrue(m.isEmpty()); + } + + /** + * test entrySetByValue() method + */ + + public void testEntrySetByValue() + { + testEntrySetByValue(new BinaryTree()); + BinaryTree m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + testEntrySetByValue(m); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + try + { + (( Map.Entry ) m.entrySetByValue().iterator().next()) + .setValue(new LocalTestNode(-1)); + fail("Should have caught UnsupportedOperationException"); + } + catch (UnsupportedOperationException ignored) + { + } + int count = m.size(); + + for (Iterator iter = m.entrySetByValue().iterator(); iter.hasNext(); ) + { + iter.next(); + iter.remove(); + --count; + assertEquals(count, m.size()); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + Collection c1 = new LinkedList(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + } + try + { + m.entrySetByValue().addAll(c1); + fail("should have caught exception of addAll()"); + } + catch (UnsupportedOperationException ignored) + { + } + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + m.entrySetByValue().clear(); + assertEquals(0, m.size()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + int x = 0; + + for (Iterator iter = m.entrySetByValue().iterator(); iter.hasNext(); ) + { + Map.Entry entry = ( Map.Entry ) iter.next(); + + assertSame(entry.getKey(), nodes[ x ].getKey()); + assertSame(entry.getValue(), nodes[ x ]); + x++; + } + } + + /** + * test keySetByValue() method + */ + + public void testKeySetByValue() + { + testKeySetByValue(new BinaryTree()); + BinaryTree m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + testKeySetByValue(m); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + int count = m.size(); + + for (Iterator iter = m.keySetByValue().iterator(); iter.hasNext(); ) + { + iter.next(); + iter.remove(); + --count; + assertEquals(count, m.size()); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + Set s = m.keySetByValue(); + + try + { + s.remove(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + s.remove(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + Comparable key = nodes[ k ].getKey(); + + assertTrue(s.remove(key)); + assertTrue(!s.contains(key)); + assertTrue(!m.containsKey(key)); + assertTrue(!m.containsValue(nodes[ k ])); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + Collection c1 = new LinkedList(); + Collection c2 = new LinkedList(); + + c2.add(new Integer(-99)); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + c2.add(nodes[ k ].getKey()); + } + assertTrue(m.keySetByValue().containsAll(c1)); + assertTrue(!m.keySetByValue().containsAll(c2)); + m = new BinaryTree(); + c1 = new LinkedList(); + c1.add(new Integer(-55)); + try + { + m.keySetByValue().addAll(c1); + fail("should have caught exception of addAll()"); + } + catch (UnsupportedOperationException ignored) + { + } + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + } + assertTrue(!m.keySetByValue().retainAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 1) + { + c1.add(nodes[ k ].getKey()); + } + } + assertTrue(m.keySetByValue().retainAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(m.keySetByValue().retainAll(c1)); + assertEquals(0, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(!m.keySetByValue().removeAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 0) + { + c1.add(nodes[ k ].getKey()); + } + } + assertTrue(m.keySetByValue().removeAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ].getKey()); + } + assertTrue(m.keySetByValue().removeAll(c1)); + assertTrue(m.size() == 0); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + m.keySetByValue().clear(); + assertTrue(m.size() == 0); + } + + /** + * test valuesByValue() method + */ + + public void testValuesByValue() + { + testValuesByValue(new BinaryTree()); + BinaryTree m = new BinaryTree(); + LocalTestNode nodes[] = makeLocalNodes(); + + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + testValuesByValue(m); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + int count = m.size(); + + for (Iterator iter = m.valuesByValue().iterator(); iter.hasNext(); ) + { + iter.next(); + iter.remove(); + --count; + assertEquals(count, m.size()); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + count = m.size(); + Collection s = m.valuesByValue(); + + for (int k = 0; k < count; k++) + { + assertTrue(s.remove(nodes[ k ])); + assertTrue(!s.contains(nodes[ k ])); + assertTrue(!m.containsKey(nodes[ k ].getKey())); + assertTrue(!m.containsValue(nodes[ k ])); + } + assertTrue(m.isEmpty()); + m = new BinaryTree(); + Collection c1 = new LinkedList(); + Collection c2 = new LinkedList(); + + c2.add(new LocalTestNode(-123)); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + c2.add(nodes[ k ]); + } + assertTrue(m.valuesByValue().containsAll(c1)); + assertTrue(!m.valuesByValue().containsAll(c2)); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + } + try + { + m.valuesByValue().addAll(c1); + fail("should have caught exception of addAll()"); + } + catch (UnsupportedOperationException ignored) + { + } + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + } + assertTrue(!m.valuesByValue().retainAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 1) + { + c1.add(nodes[ k ]); + } + } + assertTrue(m.valuesByValue().retainAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(m.valuesByValue().retainAll(c1)); + assertEquals(0, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + assertTrue(!m.valuesByValue().removeAll(c1)); + assertEquals(nodes.length, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + if (k % 2 == 0) + { + c1.add(nodes[ k ]); + } + } + assertTrue(m.valuesByValue().removeAll(c1)); + assertEquals(nodes.length / 2, m.size()); + m = new BinaryTree(); + c1 = new LinkedList(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + c1.add(nodes[ k ]); + } + assertTrue(m.valuesByValue().removeAll(c1)); + assertEquals(0, m.size()); + m = new BinaryTree(); + for (int k = 0; k < nodes.length; k++) + { + m.put(nodes[ k ].getKey(), nodes[ k ]); + } + m.valuesByValue().clear(); + assertEquals(0, m.size()); + } + + /* ********** START helper methods ********** */ + private void testKeySet(final Map m) + { + Set s = m.keySet(); + + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + LocalTestNode node = new LocalTestNode(-1); + + m.put(node.getKey(), node); + assertTrue(s.contains(node.getKey())); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + m.remove(node.getKey()); + assertTrue(!s.contains(node.getKey())); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + try + { + s.contains(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + s.contains(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < m.size(); k++) + { + assertTrue(s.contains(new Integer(k))); + } + int count = 0; + + for (Iterator iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + ++count; + } + assertEquals(count, s.size()); + + // force the map to have some content + m.put(node.getKey(), node); + Iterator iter = m.keySet().iterator(); + LocalTestNode node2 = new LocalTestNode(-2); + + m.put(node2.getKey(), node2); + try + { + iter.next(); + fail("next() should have thrown an exception after a put"); + } + catch (ConcurrentModificationException ignored) + { + } + m.remove(node2.getKey()); + iter = s.iterator(); + m.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Map remove"); + } + catch (ConcurrentModificationException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + s.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Set remove"); + } + catch (ConcurrentModificationException ignored) + { + } + iter = s.iterator(); + count = 0; + boolean terminated = false; + + try + { + while (true) + { + iter.next(); + ++count; + } + } + catch (NoSuchElementException ignored) + { + terminated = true; + } + assertTrue(terminated); + assertEquals(m.size(), count); + iter = s.iterator(); + try + { + iter.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + iter.next(); + m.put(node2.getKey(), node2); + try + { + iter.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + Iterator iter2 = s.iterator(); + + iter2.next(); + LocalTestNode node3 = new LocalTestNode(-3); + + m.put(node3.getKey(), node3); + try + { + iter2.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + int r_count = 0; + + for (iter = s.iterator(); iter.hasNext(); ) + { + if (iter.next().equals(node.getKey())) + { + try + { + iter.remove(); + ++r_count; + iter.remove(); + fail("2nd remove should have failed"); + } + catch (IllegalStateException ignored) + { + assertEquals(1, r_count); + } + } + } + assertEquals(1, r_count); + assertTrue(!s.contains(node.getKey())); + r_count = 0; + m.put(node.getKey(), node); + Object[] a1 = s.toArray(); + + assertEquals(s.size(), a1.length); + if (a1.length > 1) + { + Comparable first = ( Comparable ) a1[ 0 ]; + + for (int k = 1; k < a1.length; k++) + { + Comparable second = ( Comparable ) a1[ k ]; + + assertTrue(first.compareTo(second) < 0); + first = second; + } + iter = s.iterator(); + first = ( Comparable ) iter.next(); + for (; iter.hasNext(); ) + { + Comparable second = ( Comparable ) iter.next(); + + assertTrue(first.compareTo(second) < 0); + first = second; + } + } + try + { + String array2[] = ( String [] ) s.toArray(new String[ 0 ]); + + if (s.size() != 0) + { + fail("should have caught exception creating an invalid array"); + } + } + catch (ArrayStoreException ignored) + { + } + Comparable array2[] = + ( Comparable [] ) s.toArray(new Comparable[ 0 ]); + Integer array3[] = + ( Integer [] ) s.toArray(new Integer[ s.size() ]); + + if (array3.length > 1) + { + Integer first = array3[ 0 ]; + + for (int k = 1; k < array3.length; k++) + { + Integer second = array3[ k ]; + + assertTrue(first.compareTo(second) < 0); + first = second; + } + } + try + { + s.add("foo"); + fail("should have thrown an exception"); + } + catch (UnsupportedOperationException ignored) + { + } + assertTrue(!s.equals(null)); + assertEquals(s, s); + Set hs = new HashSet(s); + + assertEquals(s, hs); + assertEquals(hs, s); + assertTrue(s.hashCode() == hs.hashCode()); + } + + private void testKeySetByValue(final BinaryTree m) + { + Set s = m.keySetByValue(); + + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + LocalTestNode node = new LocalTestNode(-1); + + m.put(node.getKey(), node); + assertTrue(s.contains(node.getKey())); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + m.remove(node.getKey()); + assertTrue(!s.contains(node.getKey())); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + try + { + s.contains(null); + fail("should have caught NullPointerException"); + } + catch (NullPointerException ignored) + { + } + try + { + s.contains(new Object()); + fail("should have caught ClassCastException"); + } + catch (ClassCastException ignored) + { + } + for (int k = 0; k < m.size(); k++) + { + assertTrue(s.contains(new Integer(k))); + } + int count = 0; + + for (Iterator iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + ++count; + } + assertEquals(count, s.size()); + + // force the map to have some content + m.put(node.getKey(), node); + Iterator iter = m.keySetByValue().iterator(); + LocalTestNode node2 = new LocalTestNode(-2); + + m.put(node2.getKey(), node2); + try + { + iter.next(); + fail("next() should have thrown an exception after a put"); + } + catch (ConcurrentModificationException ignored) + { + } + m.remove(node2.getKey()); + iter = s.iterator(); + m.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Map remove"); + } + catch (ConcurrentModificationException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + s.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Set remove"); + } + catch (ConcurrentModificationException ignored) + { + } + iter = s.iterator(); + count = 0; + boolean terminated = false; + + try + { + while (true) + { + iter.next(); + ++count; + } + } + catch (NoSuchElementException ignored) + { + terminated = true; + } + assertTrue(terminated); + assertEquals(m.size(), count); + iter = s.iterator(); + try + { + iter.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + iter.next(); + m.put(node2.getKey(), node2); + try + { + iter.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + Iterator iter2 = s.iterator(); + + iter2.next(); + LocalTestNode node3 = new LocalTestNode(-3); + + m.put(node3.getKey(), node3); + try + { + iter2.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + int r_count = 0; + + for (iter = s.iterator(); iter.hasNext(); ) + { + if (iter.next().equals(node.getKey())) + { + try + { + iter.remove(); + ++r_count; + iter.remove(); + fail("2nd remove should have failed"); + } + catch (IllegalStateException ignored) + { + assertEquals(1, r_count); + } + } + } + assertEquals(1, r_count); + assertTrue(!s.contains(node.getKey())); + r_count = 0; + m.put(node.getKey(), node); + Object[] a1 = s.toArray(); + + assertEquals(s.size(), a1.length); + +// if (a1.length > 1) +// { +// Comparable first = ( Comparable ) a1[ 0 ]; +// for (int k = 1; k < a1.length; k++) +// { +// Comparable second = ( Comparable ) a1[ k ]; +// assertTrue(first.compareTo(second) < 0); +// first = second; +// } +// iter = s.iterator(); +// first = ( Comparable ) iter.next(); +// for (; iter.hasNext(); ) +// { +// Comparable second = ( Comparable ) iter.next(); +// assertTrue(first.compareTo(second) < 0); +// first = second; +// } +// } + try + { + String array2[] = ( String [] ) s.toArray(new String[ 0 ]); + + if (s.size() != 0) + { + fail("should have caught exception creating an invalid array"); + } + } + catch (ArrayStoreException ignored) + { + } + Comparable array2[] = + ( Comparable [] ) s.toArray(new Comparable[ 0 ]); + Integer array3[] = + ( Integer [] ) s.toArray(new Integer[ s.size() ]); + +// if (array3.length > 1) +// { +// Integer first = array3[ 0 ]; +// for (int k = 1; k < array3.length; k++) +// { +// Integer second = array3[ k ]; +// assertTrue(first.compareTo(second) < 0); +// first = second; +// } +// } + try + { + s.add("foo"); + fail("should have thrown an exception"); + } + catch (UnsupportedOperationException ignored) + { + } + assertTrue(!s.equals(null)); + assertEquals(s, s); + Set hs = new HashSet(s); + + assertEquals(s, hs); + assertEquals(hs, s); + assertTrue(s.hashCode() == hs.hashCode()); + } + + private void testValues(Map m) + { + Collection s = m.values(); + + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + LocalTestNode node = new LocalTestNode(-1); + + m.put(node.getKey(), node); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + m.remove(node.getKey()); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + assertTrue(!s.contains(node)); + for (int k = 0; k < m.size(); k++) + { + assertTrue(s.contains(new LocalTestNode(k))); + } + m.put(node.getKey(), node); + assertTrue(s.contains(node)); + m.remove(node.getKey()); + assertTrue(!s.contains(node)); + int count = 0; + + for (Iterator iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + ++count; + } + assertEquals(s.size(), count); + LocalTestNode node4 = new LocalTestNode(-4); + + m.put(node4.getKey(), node4); + Iterator iter = s.iterator(); + + m.put(node.getKey(), node); + try + { + iter.next(); + fail("next() should have thrown an exception after a put"); + } + catch (ConcurrentModificationException ignored) + { + } + iter = s.iterator(); + m.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Map remove"); + } + catch (ConcurrentModificationException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + s.remove(node); + try + { + iter.next(); + fail("next() should have thrown an exception after a Set remove"); + } + catch (ConcurrentModificationException ignored) + { + } + iter = s.iterator(); + count = 0; + boolean terminated = false; + + try + { + while (true) + { + iter.next(); + ++count; + } + } + catch (NoSuchElementException ignored) + { + terminated = true; + } + assertTrue(terminated); + assertEquals(m.size(), count); + iter = s.iterator(); + try + { + iter.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + Iterator iter2 = s.iterator(); + + try + { + iter2.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + iter.next(); + LocalTestNode node2 = new LocalTestNode(-2); + + m.put(node2.getKey(), node2); + try + { + iter.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + LocalTestNode node3 = new LocalTestNode(-3); + + m.put(node3.getKey(), node3); + iter2 = s.iterator(); + while (iter2.hasNext()) + { + iter2.next(); + } + int r_count = 0; + + for (iter = s.iterator(); iter.hasNext(); ) + { + if (iter.next().equals(node3)) + { + try + { + iter.remove(); + ++r_count; + iter.remove(); + fail("2nd remove should have failed"); + } + catch (IllegalStateException ignored) + { + assertEquals(1, r_count); + } + } + } + assertEquals(1, r_count); + assertTrue(!s.contains(node3)); + Object[] a1 = s.toArray(); + + assertTrue(a1.length == s.size()); + if (a1.length > 1) + { + Comparable first = ( Comparable ) a1[ 0 ]; + + for (int k = 1; k < a1.length; k++) + { + Comparable second = ( Comparable ) a1[ k ]; + + assertTrue(first.compareTo(second) < 0); + first = second; + } + iter = s.iterator(); + first = ( Comparable ) iter.next(); + for (; iter.hasNext(); ) + { + Comparable second = ( Comparable ) iter.next(); + + assertTrue(first.compareTo(second) < 0); + first = second; + } + } + try + { + String array2[] = ( String [] ) s.toArray(new String[ 0 ]); + + if (s.size() != 0) + { + fail("should have caught exception creating an invalid array"); + } + } + catch (ArrayStoreException ignored) + { + } + m.remove(node.getKey()); + m.remove(node2.getKey()); + m.remove(node3.getKey()); + LocalTestNode array2[] = + ( LocalTestNode [] ) s.toArray(new LocalTestNode[ 0 ]); + LocalTestNode array3[] = + ( LocalTestNode [] ) s.toArray(new LocalTestNode[ s.size() ]); + + if (array3.length > 1) + { + LocalTestNode first = array3[ 0 ]; + + for (int k = 1; k < array3.length; k++) + { + LocalTestNode second = array3[ k ]; + + assertTrue(first.compareTo(second) < 0); + first = second; + } + } + try + { + s.add(node.getKey()); + fail("should have thrown an exception"); + } + catch (UnsupportedOperationException ignored) + { + } + assertTrue(!s.equals(null)); + assertEquals(s, s); + Set hs = new HashSet(s); + + assertTrue(!s.equals(hs)); + assertTrue(!hs.equals(s)); + } + + private void testValuesByValue(BinaryTree m) + { + Collection s = m.valuesByValue(); + + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + LocalTestNode node = new LocalTestNode(-1); + + m.put(node.getKey(), node); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + m.remove(node.getKey()); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + assertTrue(!s.contains(node)); + for (int k = 0; k < m.size(); k++) + { + assertTrue(s.contains(new LocalTestNode(k))); + } + m.put(node.getKey(), node); + assertTrue(s.contains(node)); + m.remove(node.getKey()); + assertTrue(!s.contains(node)); + int count = 0; + + for (Iterator iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + ++count; + } + assertEquals(s.size(), count); + LocalTestNode node4 = new LocalTestNode(-4); + + m.put(node4.getKey(), node4); + Iterator iter = s.iterator(); + + m.put(node.getKey(), node); + try + { + iter.next(); + fail("next() should have thrown an exception after a put"); + } + catch (ConcurrentModificationException ignored) + { + } + iter = s.iterator(); + m.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Map remove"); + } + catch (ConcurrentModificationException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + s.remove(node); + try + { + iter.next(); + fail("next() should have thrown an exception after a Set remove"); + } + catch (ConcurrentModificationException ignored) + { + } + iter = s.iterator(); + count = 0; + boolean terminated = false; + + try + { + while (true) + { + iter.next(); + ++count; + } + } + catch (NoSuchElementException ignored) + { + terminated = true; + } + assertTrue(terminated); + assertEquals(m.size(), count); + iter = s.iterator(); + try + { + iter.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + Iterator iter2 = s.iterator(); + + try + { + iter2.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + iter.next(); + LocalTestNode node2 = new LocalTestNode(-2); + + m.put(node2.getKey(), node2); + try + { + iter.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + LocalTestNode node3 = new LocalTestNode(-3); + + m.put(node3.getKey(), node3); + iter2 = s.iterator(); + while (iter2.hasNext()) + { + iter2.next(); + } + int r_count = 0; + + for (iter = s.iterator(); iter.hasNext(); ) + { + if (iter.next().equals(node3)) + { + try + { + iter.remove(); + ++r_count; + iter.remove(); + fail("2nd remove should have failed"); + } + catch (IllegalStateException ignored) + { + assertEquals(1, r_count); + } + } + } + assertEquals(1, r_count); + assertTrue(!s.contains(node3)); + Object[] a1 = s.toArray(); + + assertTrue(a1.length == s.size()); + try + { + String array2[] = ( String [] ) s.toArray(new String[ 0 ]); + + if (s.size() != 0) + { + fail("should have caught exception creating an invalid array"); + } + } + catch (ArrayStoreException ignored) + { + } + m.remove(node.getKey()); + m.remove(node2.getKey()); + m.remove(node3.getKey()); + LocalTestNode array2[] = + ( LocalTestNode [] ) s.toArray(new LocalTestNode[ 0 ]); + LocalTestNode array3[] = + ( LocalTestNode [] ) s.toArray(new LocalTestNode[ s.size() ]); + + try + { + s.add(node.getKey()); + fail("should have thrown an exception"); + } + catch (UnsupportedOperationException ignored) + { + } + assertTrue(!s.equals(null)); + assertEquals(s, s); + Set hs = new HashSet(s); + + assertTrue(!s.equals(hs)); + assertTrue(!hs.equals(s)); + } + + private void testEntrySet(Map m) + { + Set s = m.entrySet(); + + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + LocalTestNode node = new LocalTestNode(-1); + + m.put(node.getKey(), node); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + m.remove(node.getKey()); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + int count = 0; + + for (Iterator iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + ++count; + } + assertEquals(s.size(), count); + LocalTestNode node2 = new LocalTestNode(-2); + + if (m.size() == 0) + { + m.put(node2.getKey(), node2); + } + Iterator iter = s.iterator(); + + m.put(node.getKey(), node); + try + { + iter.next(); + fail("next() should have thrown an exception after a put"); + } + catch (ConcurrentModificationException ignored) + { + } + m.remove(node2.getKey()); + iter = s.iterator(); + m.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Map remove"); + } + catch (ConcurrentModificationException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + count = 0; + boolean terminated = false; + + try + { + while (true) + { + iter.next(); + ++count; + } + } + catch (NoSuchElementException ignored) + { + terminated = true; + } + assertTrue(terminated); + assertEquals(m.size(), count); + iter = s.iterator(); + try + { + iter.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + iter = s.iterator(); + iter.next(); + LocalTestNode node3 = new LocalTestNode(-3); + + m.put(node3.getKey(), node3); + try + { + iter.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + int r_count = 0; + int when = m.size() / 2; + int timer = 0; + + for (iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + if (timer == when) + { + try + { + iter.remove(); + ++r_count; + iter.remove(); + fail("2nd remove should have failed"); + } + catch (IllegalStateException ignored) + { + assertEquals(1, r_count); + } + } + timer++; + } + assertEquals(1, r_count); + Iterator iter2 = s.iterator(); + + try + { + iter2.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + iter2 = s.iterator(); + while (iter2.hasNext()) + { + iter2.next(); + } + LocalTestNode node4 = new LocalTestNode(-4); + + m.put(node4.getKey(), node4); + try + { + iter2.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + Object[] a1 = s.toArray(); + + assertTrue(a1.length == s.size()); + if (a1.length > 1) + { + Map.Entry first = ( Map.Entry ) a1[ 0 ]; + + for (int k = 1; k < a1.length; k++) + { + Map.Entry second = ( Map.Entry ) a1[ k ]; + + assertTrue((( Comparable ) first.getKey()) + .compareTo(( Comparable ) second.getKey()) < 0); + first = second; + } + iter = s.iterator(); + first = ( Map.Entry ) iter.next(); + for (; iter.hasNext(); ) + { + Map.Entry second = ( Map.Entry ) iter.next(); + + assertTrue((( Comparable ) first.getKey()) + .compareTo(( Comparable ) second.getKey()) < 0); + first = second; + } + } + try + { + Integer array2[] = ( Integer [] ) s.toArray(new Integer[ 0 ]); + + if (s.size() != 0) + { + fail("should have caught exception creating an invalid array"); + } + } + catch (ArrayStoreException ignored) + { + } + Map.Entry array2[] = ( Map.Entry [] ) s.toArray(new Map.Entry[ 0 ]); + Map.Entry array3[] = + ( Map.Entry [] ) s.toArray(new Map.Entry[ s.size() ]); + + if (array3.length > 1) + { + Comparable first = + ( Comparable ) (( Map.Entry ) array3[ 0 ]).getKey(); + + for (int k = 1; k < array3.length; k++) + { + Comparable second = + ( Comparable ) (( Map.Entry ) array3[ k ]).getKey(); + + assertTrue(first.compareTo(second) < 0); + first = second; + } + } + try + { + s.add(node.getKey()); + fail("should have thrown an exception"); + } + catch (UnsupportedOperationException ignored) + { + } + assertTrue(!s.equals(null)); + assertEquals("SetEquality 1", s, s); + Set hs = new HashSet(s); + + assertEquals("SetEquality 2", s, hs); + assertEquals("SetEquality 3", hs, s); + assertTrue(s.hashCode() == hs.hashCode()); + } + + private void testEntrySetByValue(BinaryTree m) + { + Set s = m.entrySetByValue(); + + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + LocalTestNode node = new LocalTestNode(-1); + + m.put(node.getKey(), node); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + m.remove(node.getKey()); + assertEquals(m.size(), s.size()); + assertEquals(m.isEmpty(), s.isEmpty()); + int count = 0; + + for (Iterator iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + ++count; + } + assertEquals(s.size(), count); + LocalTestNode node2 = new LocalTestNode(-2); + + if (m.size() == 0) + { + m.put(node2.getKey(), node2); + } + Iterator iter = s.iterator(); + + m.put(node.getKey(), node); + try + { + iter.next(); + fail("next() should have thrown an exception after a put"); + } + catch (ConcurrentModificationException ignored) + { + } + m.remove(node2.getKey()); + iter = s.iterator(); + m.remove(node.getKey()); + try + { + iter.next(); + fail("next() should have thrown an exception after a Map remove"); + } + catch (ConcurrentModificationException ignored) + { + } + m.put(node.getKey(), node); + iter = s.iterator(); + count = 0; + boolean terminated = false; + + try + { + while (true) + { + iter.next(); + ++count; + } + } + catch (NoSuchElementException ignored) + { + terminated = true; + } + assertTrue(terminated); + assertEquals(m.size(), count); + iter = s.iterator(); + try + { + iter.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + iter = s.iterator(); + iter.next(); + LocalTestNode node3 = new LocalTestNode(-3); + + m.put(node3.getKey(), node3); + try + { + iter.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + int r_count = 0; + int when = m.size() / 2; + int timer = 0; + + for (iter = s.iterator(); iter.hasNext(); ) + { + iter.next(); + if (timer == when) + { + try + { + iter.remove(); + ++r_count; + iter.remove(); + fail("2nd remove should have failed"); + } + catch (IllegalStateException ignored) + { + assertEquals(1, r_count); + } + } + timer++; + } + assertEquals(1, r_count); + Iterator iter2 = s.iterator(); + + try + { + iter2.remove(); + fail("Should have thrown exception"); + } + catch (IllegalStateException ignored) + { + } + iter2 = s.iterator(); + while (iter2.hasNext()) + { + iter2.next(); + } + LocalTestNode node4 = new LocalTestNode(-4); + + m.put(node4.getKey(), node4); + try + { + iter2.remove(); + fail("should have thrown exception"); + } + catch (ConcurrentModificationException ignored) + { + } + Object[] a1 = s.toArray(); + + assertTrue(a1.length == s.size()); + if (a1.length > 1) + { + Map.Entry first = ( Map.Entry ) a1[ 0 ]; + + for (int k = 1; k < a1.length; k++) + { + Map.Entry second = ( Map.Entry ) a1[ k ]; + + assertTrue((( Comparable ) first.getKey()) + .compareTo(( Comparable ) second.getKey()) < 0); + first = second; + } + iter = s.iterator(); + first = ( Map.Entry ) iter.next(); + for (; iter.hasNext(); ) + { + Map.Entry second = ( Map.Entry ) iter.next(); + + assertTrue((( Comparable ) first.getKey()) + .compareTo(( Comparable ) second.getKey()) < 0); + first = second; + } + } + try + { + Integer array2[] = ( Integer [] ) s.toArray(new Integer[ 0 ]); + + if (s.size() != 0) + { + fail("should have caught exception creating an invalid array"); + } + } + catch (ArrayStoreException ignored) + { + } + Map.Entry array2[] = ( Map.Entry [] ) s.toArray(new Map.Entry[ 0 ]); + Map.Entry array3[] = + ( Map.Entry [] ) s.toArray(new Map.Entry[ s.size() ]); + + if (array3.length > 1) + { + Comparable first = + ( Comparable ) (( Map.Entry ) array3[ 0 ]).getValue(); + + for (int k = 1; k < array3.length; k++) + { + Comparable second = + ( Comparable ) (( Map.Entry ) array3[ k ]).getValue(); + + assertTrue(first.compareTo(second) < 0); + first = second; + } + } + try + { + s.add(node.getKey()); + fail("should have thrown an exception"); + } + catch (UnsupportedOperationException ignored) + { + } + assertTrue(!s.equals(null)); + assertEquals("SetEquality 1", s, s); + Set hs = new HashSet(s); + + assertEquals("SetEquality 2", s, hs); + assertEquals("SetEquality 3", hs, s); + assertTrue(s.hashCode() == hs.hashCode()); + } + + private LocalTestNode [] makeLocalNodes() + { + LocalTestNode nodes[] = new LocalTestNode[ 1023 ]; + + for (int k = 0; k < nodes.length; k++) + { + nodes[ k ] = new LocalTestNode(k); + } + return nodes; + } + + /* ********** END helper methods ********** */ + + /** + * Method main + * + * @param unused_args + */ + + public static void main(final String unused_args[]) + { + junit.textui.TestRunner.run(TestBinaryTree.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestBitField.java b/src/testcases/org/apache/poi/util/TestBitField.java new file mode 100644 index 0000000000..b39f829d35 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestBitField.java @@ -0,0 +1,326 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +/** + * Class to test BitField functionality + * + * @author Marc Johnson + * @author Glen Stampoultzis (gstamp@iprimus.com.au) + */ + +public class TestBitField + extends TestCase +{ + private static BitField bf_multi = new BitField(0x3F80); + private static BitField bf_single = new BitField(0x4000); + + /** + * Constructor TestBitField + * + * @param name + */ + + public TestBitField(String name) + { + super(name); + } + + /** + * test the getValue() method + */ + + public void testGetValue() + { + assertEquals(bf_multi.getValue(-1), 127); + assertEquals(bf_multi.getValue(0), 0); + assertEquals(bf_single.getValue(-1), 1); + assertEquals(bf_single.getValue(0), 0); + } + + /** + * test the getShortValue() method + */ + + public void testGetShortValue() + { + assertEquals(bf_multi.getShortValue(( short ) -1), ( short ) 127); + assertEquals(bf_multi.getShortValue(( short ) 0), ( short ) 0); + assertEquals(bf_single.getShortValue(( short ) -1), ( short ) 1); + assertEquals(bf_single.getShortValue(( short ) 0), ( short ) 0); + } + + /** + * test the getRawValue() method + */ + + public void testGetRawValue() + { + assertEquals(bf_multi.getRawValue(-1), 0x3F80); + assertEquals(bf_multi.getRawValue(0), 0); + assertEquals(bf_single.getRawValue(-1), 0x4000); + assertEquals(bf_single.getRawValue(0), 0); + } + + /** + * test the getShortRawValue() method + */ + + public void testGetShortRawValue() + { + assertEquals(bf_multi.getShortRawValue(( short ) -1), + ( short ) 0x3F80); + assertEquals(bf_multi.getShortRawValue(( short ) 0), ( short ) 0); + assertEquals(bf_single.getShortRawValue(( short ) -1), + ( short ) 0x4000); + assertEquals(bf_single.getShortRawValue(( short ) 0), ( short ) 0); + } + + /** + * test the isSet() method + */ + + public void testIsSet() + { + assertTrue(!bf_multi.isSet(0)); + for (int j = 0x80; j <= 0x3F80; j += 0x80) + { + assertTrue(bf_multi.isSet(j)); + } + assertTrue(!bf_single.isSet(0)); + assertTrue(bf_single.isSet(0x4000)); + } + + /** + * test the isAllSet() method + */ + + public void testIsAllSet() + { + for (int j = 0; j < 0x3F80; j += 0x80) + { + assertTrue(!bf_multi.isAllSet(j)); + } + assertTrue(bf_multi.isAllSet(0x3F80)); + assertTrue(!bf_single.isAllSet(0)); + assertTrue(bf_single.isAllSet(0x4000)); + } + + /** + * test the setValue() method + */ + + public void testSetValue() + { + for (int j = 0; j < 128; j++) + { + assertEquals(bf_multi.getValue(bf_multi.setValue(0, j)), j); + assertEquals(bf_multi.setValue(0, j), j << 7); + } + + // verify that excess bits are stripped off + assertEquals(bf_multi.setValue(0x3f80, 128), 0); + for (int j = 0; j < 2; j++) + { + assertEquals(bf_single.getValue(bf_single.setValue(0, j)), j); + assertEquals(bf_single.setValue(0, j), j << 14); + } + + // verify that excess bits are stripped off + assertEquals(bf_single.setValue(0x4000, 2), 0); + } + + /** + * test the setShortValue() method + */ + + public void testSetShortValue() + { + for (int j = 0; j < 128; j++) + { + assertEquals(bf_multi + .getShortValue(bf_multi + .setShortValue(( short ) 0, ( short ) j)), ( short ) j); + assertEquals(bf_multi.setShortValue(( short ) 0, ( short ) j), + ( short ) (j << 7)); + } + + // verify that excess bits are stripped off + assertEquals(bf_multi.setShortValue(( short ) 0x3f80, ( short ) 128), + ( short ) 0); + for (int j = 0; j < 2; j++) + { + assertEquals(bf_single + .getShortValue(bf_single + .setShortValue(( short ) 0, ( short ) j)), ( short ) j); + assertEquals(bf_single.setShortValue(( short ) 0, ( short ) j), + ( short ) (j << 14)); + } + + // verify that excess bits are stripped off + assertEquals(bf_single.setShortValue(( short ) 0x4000, ( short ) 2), + ( short ) 0); + } + + public void testByte() + { + assertEquals(1, new BitField(1).setByteBoolean(( byte ) 0, true)); + assertEquals(2, new BitField(2).setByteBoolean(( byte ) 0, true)); + assertEquals(4, new BitField(4).setByteBoolean(( byte ) 0, true)); + assertEquals(8, new BitField(8).setByteBoolean(( byte ) 0, true)); + assertEquals(16, new BitField(16).setByteBoolean(( byte ) 0, true)); + assertEquals(32, new BitField(32).setByteBoolean(( byte ) 0, true)); + assertEquals(64, new BitField(64).setByteBoolean(( byte ) 0, true)); + assertEquals(-128, + new BitField(128).setByteBoolean(( byte ) 0, true)); + assertEquals(0, new BitField(1).setByteBoolean(( byte ) 1, false)); + assertEquals(0, new BitField(2).setByteBoolean(( byte ) 2, false)); + assertEquals(0, new BitField(4).setByteBoolean(( byte ) 4, false)); + assertEquals(0, new BitField(8).setByteBoolean(( byte ) 8, false)); + assertEquals(0, new BitField(16).setByteBoolean(( byte ) 16, false)); + assertEquals(0, new BitField(32).setByteBoolean(( byte ) 32, false)); + assertEquals(0, new BitField(64).setByteBoolean(( byte ) 64, false)); + assertEquals(0, new BitField(128).setByteBoolean(( byte ) 128, + false)); + assertEquals(-2, new BitField(1).setByteBoolean(( byte ) 255, false)); + byte clearedBit = new BitField(0x40).setByteBoolean(( byte ) -63, + false); + + assertEquals(false, new BitField(0x40).isSet(clearedBit)); + } + + /** + * test the clear() method + */ + + public void testClear() + { + assertEquals(bf_multi.clear(-1), 0xFFFFC07F); + assertEquals(bf_single.clear(-1), 0xFFFFBFFF); + } + + /** + * test the clearShort() method + */ + + public void testClearShort() + { + assertEquals(bf_multi.clearShort(( short ) -1), ( short ) 0xC07F); + assertEquals(bf_single.clearShort(( short ) -1), ( short ) 0xBFFF); + } + + /** + * test the set() method + */ + + public void testSet() + { + assertEquals(bf_multi.set(0), 0x3F80); + assertEquals(bf_single.set(0), 0x4000); + } + + /** + * test the setShort() method + */ + + public void testSetShort() + { + assertEquals(bf_multi.setShort(( short ) 0), ( short ) 0x3F80); + assertEquals(bf_single.setShort(( short ) 0), ( short ) 0x4000); + } + + /** + * test the setBoolean() method + */ + + public void testSetBoolean() + { + assertEquals(bf_multi.set(0), bf_multi.setBoolean(0, true)); + assertEquals(bf_single.set(0), bf_single.setBoolean(0, true)); + assertEquals(bf_multi.clear(-1), bf_multi.setBoolean(-1, false)); + assertEquals(bf_single.clear(-1), bf_single.setBoolean(-1, false)); + } + + /** + * test the setShortBoolean() method + */ + + public void testSetShortBoolean() + { + assertEquals(bf_multi.setShort(( short ) 0), + bf_multi.setShortBoolean(( short ) 0, true)); + assertEquals(bf_single.setShort(( short ) 0), + bf_single.setShortBoolean(( short ) 0, true)); + assertEquals(bf_multi.clearShort(( short ) -1), + bf_multi.setShortBoolean(( short ) -1, false)); + assertEquals(bf_single.clearShort(( short ) -1), + bf_single.setShortBoolean(( short ) -1, false)); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing util.BitField functionality"); + junit.textui.TestRunner.run(TestBitField.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestByteField.java b/src/testcases/org/apache/poi/util/TestByteField.java new file mode 100644 index 0000000000..351dc7a256 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestByteField.java @@ -0,0 +1,251 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.io.*; + +/** + * Title: Unit test for ByteField class + * Description: Unit test for ByteField class + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestByteField + extends TestCase +{ + + /** + * Constructor + * + * @param name + */ + + public TestByteField(String name) + { + super(name); + } + + static private final byte[] _test_array = + { + Byte.MIN_VALUE, ( byte ) -1, ( byte ) 0, ( byte ) 1, Byte.MAX_VALUE + }; + + /** + * Test constructors. + */ + + public void testConstructors() + { + try + { + new ByteField(-1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + ByteField field = new ByteField(2); + + assertEquals(( byte ) 0, field.get()); + try + { + new ByteField(-1, ( byte ) 1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new ByteField(2, ( byte ) 3); + assertEquals(( byte ) 3, field.get()); + byte[] array = new byte[ 3 ]; + + try + { + new ByteField(-1, ( byte ) 1, array); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new ByteField(2, ( byte ) 4, array); + assertEquals(( byte ) 4, field.get()); + assertEquals(( byte ) 4, array[ 2 ]); + array = new byte[ 2 ]; + try + { + new ByteField(2, ( byte ) 5, array); + fail("should have gotten ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + for (int j = 0; j < _test_array.length; j++) + { + array = new byte[ 1 ]; + new ByteField(0, _test_array[ j ], array); + assertEquals(_test_array[ j ], new ByteField(0, array).get()); + } + } + + /** + * Test set() methods + */ + + public void testSet() + { + ByteField field = new ByteField(0); + byte[] array = new byte[ 1 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + assertEquals("testing _1 " + j, _test_array[ j ], field.get()); + field = new ByteField(0); + field.set(_test_array[ j ], array); + assertEquals("testing _2 ", _test_array[ j ], field.get()); + assertEquals("testing _3 ", _test_array[ j ], array[ 0 ]); + } + } + + /** + * Test readFromBytes + */ + + public void testReadFromBytes() + { + ByteField field = new ByteField(1); + byte[] array = new byte[ 1 ]; + + try + { + field.readFromBytes(array); + fail("should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new ByteField(0); + for (int j = 0; j < _test_array.length; j++) + { + array[ 0 ] = _test_array[ j ]; + field.readFromBytes(array); + assertEquals("testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * Test readFromStream + * + * @exception IOException + */ + + public void testReadFromStream() + throws IOException + { + ByteField field = new ByteField(0); + byte[] buffer = new byte[ _test_array.length ]; + + System.arraycopy(_test_array, 0, buffer, 0, buffer.length); + ByteArrayInputStream stream = new ByteArrayInputStream(buffer); + + for (int j = 0; j < buffer.length; j++) + { + field.readFromStream(stream); + assertEquals("Testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * test writeToBytes + */ + + public void testWriteToBytes() + { + ByteField field = new ByteField(0); + byte[] array = new byte[ 1 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + field.writeToBytes(array); + assertEquals("testing ", _test_array[ j ], array[ 0 ]); + } + } + + /** + * Main + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing util.ByteField functionality"); + junit.textui.TestRunner.run(TestByteField.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestHexDump.java b/src/testcases/org/apache/poi/util/TestHexDump.java new file mode 100644 index 0000000000..841d66873a --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestHexDump.java @@ -0,0 +1,341 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.io.*; + +/** + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestHexDump + extends TestCase +{ + + /** + * Creates new TestHexDump + * + * @param name + */ + + public TestHexDump(String name) + { + super(name); + } + + private char toHex(final int n) + { + char[] hexChars = + { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', + 'D', 'E', 'F' + }; + + return hexChars[ n % 16 ]; + } + + /** + * test dump method + * + * @exception IOException + */ + + public void testDump() + throws IOException + { + byte[] testArray = new byte[ 256 ]; + + for (int j = 0; j < 256; j++) + { + testArray[ j ] = ( byte ) j; + } + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + HexDump.dump(testArray, 0, stream, 0); + byte[] outputArray = new byte[ 16 * (73 + HexDump.EOL.length()) ]; + + for (int j = 0; j < 16; j++) + { + int offset = (73 + HexDump.EOL.length()) * j; + + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) toHex(j); + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) ' '; + for (int k = 0; k < 16; k++) + { + outputArray[ offset++ ] = ( byte ) toHex(j); + outputArray[ offset++ ] = ( byte ) toHex(k); + outputArray[ offset++ ] = ( byte ) ' '; + } + for (int k = 0; k < 16; k++) + { + outputArray[ offset++ ] = ( byte ) toAscii((j * 16) + k); + } + System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset, + HexDump.EOL.getBytes().length); + } + byte[] actualOutput = stream.toByteArray(); + + assertEquals("array size mismatch", outputArray.length, + actualOutput.length); + for (int j = 0; j < outputArray.length; j++) + { + assertEquals("array[ " + j + "] mismatch", outputArray[ j ], + actualOutput[ j ]); + } + + // verify proper behavior with non-zero offset + stream = new ByteArrayOutputStream(); + HexDump.dump(testArray, 0x10000000, stream, 0); + outputArray = new byte[ 16 * (73 + HexDump.EOL.length()) ]; + for (int j = 0; j < 16; j++) + { + int offset = (73 + HexDump.EOL.length()) * j; + + outputArray[ offset++ ] = ( byte ) '1'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) toHex(j); + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) ' '; + for (int k = 0; k < 16; k++) + { + outputArray[ offset++ ] = ( byte ) toHex(j); + outputArray[ offset++ ] = ( byte ) toHex(k); + outputArray[ offset++ ] = ( byte ) ' '; + } + for (int k = 0; k < 16; k++) + { + outputArray[ offset++ ] = ( byte ) toAscii((j * 16) + k); + } + System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset, + HexDump.EOL.getBytes().length); + } + actualOutput = stream.toByteArray(); + assertEquals("array size mismatch", outputArray.length, + actualOutput.length); + for (int j = 0; j < outputArray.length; j++) + { + assertEquals("array[ " + j + "] mismatch", outputArray[ j ], + actualOutput[ j ]); + } + + // verify proper behavior with negative offset + stream = new ByteArrayOutputStream(); + HexDump.dump(testArray, 0xFF000000, stream, 0); + outputArray = new byte[ 16 * (73 + HexDump.EOL.length()) ]; + for (int j = 0; j < 16; j++) + { + int offset = (73 + HexDump.EOL.length()) * j; + + outputArray[ offset++ ] = ( byte ) 'F'; + outputArray[ offset++ ] = ( byte ) 'F'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) toHex(j); + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) ' '; + for (int k = 0; k < 16; k++) + { + outputArray[ offset++ ] = ( byte ) toHex(j); + outputArray[ offset++ ] = ( byte ) toHex(k); + outputArray[ offset++ ] = ( byte ) ' '; + } + for (int k = 0; k < 16; k++) + { + outputArray[ offset++ ] = ( byte ) toAscii((j * 16) + k); + } + System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset, + HexDump.EOL.getBytes().length); + } + actualOutput = stream.toByteArray(); + assertEquals("array size mismatch", outputArray.length, + actualOutput.length); + for (int j = 0; j < outputArray.length; j++) + { + assertEquals("array[ " + j + "] mismatch", outputArray[ j ], + actualOutput[ j ]); + } + + // verify proper behavior with non-zero index + stream = new ByteArrayOutputStream(); + HexDump.dump(testArray, 0x10000000, stream, 0x81); + outputArray = new byte[ (8 * (73 + HexDump.EOL.length())) - 1 ]; + for (int j = 0; j < 8; j++) + { + int offset = (73 + HexDump.EOL.length()) * j; + + outputArray[ offset++ ] = ( byte ) '1'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) '0'; + outputArray[ offset++ ] = ( byte ) toHex(j + 8); + outputArray[ offset++ ] = ( byte ) '1'; + outputArray[ offset++ ] = ( byte ) ' '; + for (int k = 0; k < 16; k++) + { + int index = 0x81 + (j * 16) + k; + + if (index < 0x100) + { + outputArray[ offset++ ] = ( byte ) toHex(index / 16); + outputArray[ offset++ ] = ( byte ) toHex(index); + } + else + { + outputArray[ offset++ ] = ( byte ) ' '; + outputArray[ offset++ ] = ( byte ) ' '; + } + outputArray[ offset++ ] = ( byte ) ' '; + } + for (int k = 0; k < 16; k++) + { + int index = 0x81 + (j * 16) + k; + + if (index < 0x100) + { + outputArray[ offset++ ] = ( byte ) toAscii(index); + } + } + System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset, + HexDump.EOL.getBytes().length); + } + actualOutput = stream.toByteArray(); + assertEquals("array size mismatch", outputArray.length, + actualOutput.length); + for (int j = 0; j < outputArray.length; j++) + { + assertEquals("array[ " + j + "] mismatch", outputArray[ j ], + actualOutput[ j ]); + } + + // verify proper behavior with negative index + try + { + HexDump.dump(testArray, 0x10000000, new ByteArrayOutputStream(), + -1); + fail("should have caught ArrayIndexOutOfBoundsException on negative index"); + } + catch (ArrayIndexOutOfBoundsException ignored_exception) + { + + // as expected + } + + // verify proper behavior with index that is too large + try + { + HexDump.dump(testArray, 0x10000000, new ByteArrayOutputStream(), + testArray.length); + fail("should have caught ArrayIndexOutOfBoundsException on large index"); + } + catch (ArrayIndexOutOfBoundsException ignored_exception) + { + + // as expected + } + + // verify proper behavior with null stream + try + { + HexDump.dump(testArray, 0x10000000, null, 0); + fail("should have caught IllegalArgumentException on negative index"); + } + catch (IllegalArgumentException ignored_exception) + { + + // as expected + } + } + + private char toAscii(final int c) + { + char rval = '.'; + + if ((c >= 32) && (c <= 126)) + { + rval = ( char ) c; + } + return rval; + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing util.HexDump functionality"); + junit.textui.TestRunner.run(TestHexDump.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestIntList.java b/src/testcases/org/apache/poi/util/TestIntList.java new file mode 100644 index 0000000000..28ba20e557 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestIntList.java @@ -0,0 +1,723 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +/** + * Class to test IntList + * + * @author Marc Johnson + */ + +public class TestIntList + extends TestCase +{ + + /** + * Constructor TestIntList + * + * @param name + */ + + public TestIntList(String name) + { + super(name); + } + + /** + * test the various IntListconstructors + */ + + public void testConstructors() + { + IntList list = new IntList(); + + assertTrue(list.isEmpty()); + list.add(0); + list.add(1); + IntList list2 = new IntList(list); + + assertEquals(list, list2); + IntList list3 = new IntList(2); + + assertTrue(list3.isEmpty()); + } + + /** + * test the add method + */ + + public void testAdd() + { + IntList list = new IntList(); + int[] testArray = + { + 0, 1, 2, 3, 5 + }; + + for (int j = 0; j < testArray.length; j++) + { + list.add(testArray[ j ]); + } + for (int j = 0; j < testArray.length; j++) + { + assertEquals(testArray[ j ], list.get(j)); + } + assertEquals(testArray.length, list.size()); + + // add at the beginning + list.add(0, -1); + assertEquals(-1, list.get(0)); + assertEquals(testArray.length + 1, list.size()); + for (int j = 0; j < testArray.length; j++) + { + assertEquals(testArray[ j ], list.get(j + 1)); + } + + // add in the middle + list.add(5, 4); + assertEquals(4, list.get(5)); + assertEquals(testArray.length + 2, list.size()); + for (int j = 0; j < list.size(); j++) + { + assertEquals(j - 1, list.get(j)); + } + + // add at the end + list.add(list.size(), 6); + assertEquals(testArray.length + 3, list.size()); + for (int j = 0; j < list.size(); j++) + { + assertEquals(j - 1, list.get(j)); + } + + // add past end + try + { + list.add(list.size() + 1, 8); + fail("should have thrown exception"); + } + catch (IndexOutOfBoundsException e) + { + + // as expected + } + + // test growth + list = new IntList(0); + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + assertEquals(1000, list.size()); + for (int j = 0; j < 1000; j++) + { + assertEquals(j, list.get(j)); + } + list = new IntList(0); + for (int j = 0; j < 1000; j++) + { + list.add(0, j); + } + assertEquals(1000, list.size()); + for (int j = 0; j < 1000; j++) + { + assertEquals(j, list.get(999 - j)); + } + } + + /** + * test the addAll method + */ + + public void testAddAll() + { + IntList list = new IntList(); + + for (int j = 0; j < 5; j++) + { + list.add(j); + } + IntList list2 = new IntList(0); + + list2.addAll(list); + list2.addAll(list); + assertEquals(2 * list.size(), list2.size()); + for (int j = 0; j < 5; j++) + { + assertEquals(list2.get(j), j); + assertEquals(list2.get(j + list.size()), j); + } + IntList empty = new IntList(); + int limit = list.size(); + + for (int j = 0; j < limit; j++) + { + assertTrue(list.addAll(j, empty)); + assertEquals(limit, list.size()); + } + try + { + list.addAll(limit + 1, empty); + fail("should have thrown an exception"); + } + catch (IndexOutOfBoundsException e) + { + + // as expected + } + + // try add at beginning + empty.addAll(0, list); + assertEquals(empty, list); + + // try in the middle + empty.addAll(1, list); + assertEquals(2 * list.size(), empty.size()); + assertEquals(list.get(0), empty.get(0)); + assertEquals(list.get(0), empty.get(1)); + assertEquals(list.get(1), empty.get(2)); + assertEquals(list.get(1), empty.get(6)); + assertEquals(list.get(2), empty.get(3)); + assertEquals(list.get(2), empty.get(7)); + assertEquals(list.get(3), empty.get(4)); + assertEquals(list.get(3), empty.get(8)); + assertEquals(list.get(4), empty.get(5)); + assertEquals(list.get(4), empty.get(9)); + + // try at the end + empty.addAll(empty.size(), list); + assertEquals(3 * list.size(), empty.size()); + assertEquals(list.get(0), empty.get(0)); + assertEquals(list.get(0), empty.get(1)); + assertEquals(list.get(0), empty.get(10)); + assertEquals(list.get(1), empty.get(2)); + assertEquals(list.get(1), empty.get(6)); + assertEquals(list.get(1), empty.get(11)); + assertEquals(list.get(2), empty.get(3)); + assertEquals(list.get(2), empty.get(7)); + assertEquals(list.get(2), empty.get(12)); + assertEquals(list.get(3), empty.get(4)); + assertEquals(list.get(3), empty.get(8)); + assertEquals(list.get(3), empty.get(13)); + assertEquals(list.get(4), empty.get(5)); + assertEquals(list.get(4), empty.get(9)); + assertEquals(list.get(4), empty.get(14)); + } + + /** + * test the clear method + */ + + public void testClear() + { + IntList list = new IntList(); + + for (int j = 0; j < 500; j++) + { + list.add(j); + } + assertEquals(500, list.size()); + list.clear(); + assertEquals(0, list.size()); + for (int j = 0; j < 500; j++) + { + list.add(j + 1); + } + assertEquals(500, list.size()); + for (int j = 0; j < 500; j++) + { + assertEquals(j + 1, list.get(j)); + } + } + + /** + * test the contains method + */ + + public void testContains() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j += 2) + { + list.add(j); + } + for (int j = 0; j < 1000; j++) + { + if (j % 2 == 0) + { + assertTrue(list.contains(j)); + } + else + { + assertTrue(!list.contains(j)); + } + } + } + + /** + * test the containsAll method + */ + + public void testContainsAll() + { + IntList list = new IntList(); + + assertTrue(list.containsAll(list)); + for (int j = 0; j < 10; j++) + { + list.add(j); + } + IntList list2 = new IntList(list); + + assertTrue(list2.containsAll(list)); + assertTrue(list.containsAll(list2)); + list2.add(10); + assertTrue(list2.containsAll(list)); + assertTrue(!list.containsAll(list2)); + list.add(11); + assertTrue(!list2.containsAll(list)); + assertTrue(!list.containsAll(list2)); + } + + /** + * test the equals method + */ + + public void testEquals() + { + IntList list = new IntList(); + + assertEquals(list, list); + assertTrue(!list.equals(null)); + IntList list2 = new IntList(200); + + assertEquals(list, list2); + assertEquals(list2, list); + assertEquals(list.hashCode(), list2.hashCode()); + list.add(0); + list.add(1); + list2.add(1); + list2.add(0); + assertTrue(!list.equals(list2)); + list2.removeValue(1); + list2.add(1); + assertEquals(list, list2); + assertEquals(list2, list); + list2.add(2); + assertTrue(!list.equals(list2)); + assertTrue(!list2.equals(list)); + } + + /** + * test the get method + */ + + public void testGet() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + for (int j = 0; j < 1001; j++) + { + try + { + assertEquals(j, list.get(j)); + if (j == 1000) + { + fail("should have gotten exception"); + } + } + catch (IndexOutOfBoundsException e) + { + if (j != 1000) + { + fail("unexpected IndexOutOfBoundsException"); + } + } + } + } + + /** + * test the indexOf method + */ + + public void testIndexOf() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j / 2); + } + for (int j = 0; j < 1000; j++) + { + if (j < 500) + { + assertEquals(j * 2, list.indexOf(j)); + } + else + { + assertEquals(-1, list.indexOf(j)); + } + } + } + + /** + * test the isEmpty method + */ + + public void testIsEmpty() + { + IntList list1 = new IntList(); + IntList list2 = new IntList(1000); + IntList list3 = new IntList(list1); + + assertTrue(list1.isEmpty()); + assertTrue(list2.isEmpty()); + assertTrue(list3.isEmpty()); + list1.add(1); + list2.add(2); + list3 = new IntList(list2); + assertTrue(!list1.isEmpty()); + assertTrue(!list2.isEmpty()); + assertTrue(!list3.isEmpty()); + list1.clear(); + list2.remove(0); + list3.removeValue(2); + assertTrue(list1.isEmpty()); + assertTrue(list2.isEmpty()); + assertTrue(list3.isEmpty()); + } + + /** + * test the lastIndexOf method + */ + + public void testLastIndexOf() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j / 2); + } + for (int j = 0; j < 1000; j++) + { + if (j < 500) + { + assertEquals(1 + j * 2, list.lastIndexOf(j)); + } + else + { + assertEquals(-1, list.indexOf(j)); + } + } + } + + /** + * test the remove method + */ + + public void testRemove() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + for (int j = 0; j < 1000; j++) + { + assertEquals(j, list.remove(0)); + assertEquals(999 - j, list.size()); + } + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + for (int j = 0; j < 1000; j++) + { + assertEquals(999 - j, list.remove(999 - j)); + assertEquals(999 - j, list.size()); + } + try + { + list.remove(0); + fail("should have caught IndexOutOfBoundsException"); + } + catch (IndexOutOfBoundsException e) + { + + // as expected + } + } + + /** + * test the removeValue method + */ + + public void testRemoveValue() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j / 2); + } + for (int j = 0; j < 1000; j++) + { + if (j < 500) + { + assertTrue(list.removeValue(j)); + assertTrue(list.removeValue(j)); + } + assertTrue(!list.removeValue(j)); + } + } + + /** + * test the removeAll method + */ + + public void testRemoveAll() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + IntList listCopy = new IntList(list); + IntList listOdd = new IntList(); + IntList listEven = new IntList(); + + for (int j = 0; j < 1000; j++) + { + if (j % 2 == 0) + { + listEven.add(j); + } + else + { + listOdd.add(j); + } + } + list.removeAll(listEven); + assertEquals(list, listOdd); + list.removeAll(listOdd); + assertTrue(list.isEmpty()); + listCopy.removeAll(listOdd); + assertEquals(listCopy, listEven); + listCopy.removeAll(listEven); + assertTrue(listCopy.isEmpty()); + } + + /** + * test the retainAll method + */ + + public void testRetainAll() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + IntList listCopy = new IntList(list); + IntList listOdd = new IntList(); + IntList listEven = new IntList(); + + for (int j = 0; j < 1000; j++) + { + if (j % 2 == 0) + { + listEven.add(j); + } + else + { + listOdd.add(j); + } + } + list.retainAll(listOdd); + assertEquals(list, listOdd); + list.retainAll(listEven); + assertTrue(list.isEmpty()); + listCopy.retainAll(listEven); + assertEquals(listCopy, listEven); + listCopy.retainAll(listOdd); + assertTrue(listCopy.isEmpty()); + } + + /** + * test the set method + */ + + public void testSet() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + for (int j = 0; j < 1001; j++) + { + try + { + list.set(j, j + 1); + if (j == 1000) + { + fail("Should have gotten exception"); + } + assertEquals(j + 1, list.get(j)); + } + catch (IndexOutOfBoundsException e) + { + if (j != 1000) + { + fail("premature exception"); + } + } + } + } + + /** + * test the size method + */ + + public void testSize() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + assertEquals(j, list.size()); + list.add(j); + assertEquals(j + 1, list.size()); + } + for (int j = 0; j < 1000; j++) + { + assertEquals(1000 - j, list.size()); + list.removeValue(j); + assertEquals(999 - j, list.size()); + } + } + + /** + * test the toArray method + */ + + public void testToArray() + { + IntList list = new IntList(); + + for (int j = 0; j < 1000; j++) + { + list.add(j); + } + int[] a1 = list.toArray(); + + assertEquals(a1.length, list.size()); + for (int j = 0; j < 1000; j++) + { + assertEquals(a1[ j ], list.get(j)); + } + int[] a2 = new int[ list.size() ]; + int[] a3 = list.toArray(a2); + + assertSame(a2, a3); + for (int j = 0; j < 1000; j++) + { + assertEquals(a2[ j ], list.get(j)); + } + int[] aShort = new int[ list.size() - 1 ]; + int[] aLong = new int[ list.size() + 1 ]; + int[] a4 = list.toArray(aShort); + int[] a5 = list.toArray(aLong); + + assertTrue(a4 != aShort); + assertTrue(a5 != aLong); + assertEquals(a4.length, list.size()); + for (int j = 0; j < 1000; j++) + { + assertEquals(a3[ j ], list.get(j)); + } + assertEquals(a5.length, list.size()); + for (int j = 0; j < 1000; j++) + { + assertEquals(a5[ j ], list.get(j)); + } + } + + /** + * main method to run the unit tests + * + * @param unused_args + */ + + public static void main(String [] unused_args) + { + System.out.println("Testing util.IntList functionality"); + junit.textui.TestRunner.run(TestIntList.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestIntegerField.java b/src/testcases/org/apache/poi/util/TestIntegerField.java new file mode 100644 index 0000000000..df57c86d87 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestIntegerField.java @@ -0,0 +1,279 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.io.*; + +/** + * Test IntegerField code + * + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestIntegerField + extends TestCase +{ + + /** + * Constructor + * + * @param name + */ + + public TestIntegerField(String name) + { + super(name); + } + + static private final int[] _test_array = + { + Integer.MIN_VALUE, -1, 0, 1, Integer.MAX_VALUE + }; + + /** + * Test constructors. + */ + + public void testConstructors() + { + try + { + new IntegerField(-1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + IntegerField field = new IntegerField(2); + + assertEquals(0, field.get()); + try + { + new IntegerField(-1, 1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new IntegerField(2, 0x12345678); + assertEquals(0x12345678, field.get()); + byte[] array = new byte[ 6 ]; + + try + { + new IntegerField(-1, 1, array); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new IntegerField(2, 0x12345678, array); + assertEquals(0x12345678, field.get()); + assertEquals(( byte ) 0x78, array[ 2 ]); + assertEquals(( byte ) 0x56, array[ 3 ]); + assertEquals(( byte ) 0x34, array[ 4 ]); + assertEquals(( byte ) 0x12, array[ 5 ]); + array = new byte[ 5 ]; + try + { + new IntegerField(2, 5, array); + fail("should have gotten ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + for (int j = 0; j < _test_array.length; j++) + { + array = new byte[ 4 ]; + new IntegerField(0, _test_array[ j ], array); + assertEquals(_test_array[ j ], new IntegerField(0, array).get()); + } + } + + /** + * Test set() methods + */ + + public void testSet() + { + IntegerField field = new IntegerField(0); + byte[] array = new byte[ 4 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + assertEquals("testing _1 " + j, _test_array[ j ], field.get()); + field = new IntegerField(0); + field.set(_test_array[ j ], array); + assertEquals("testing _2 ", _test_array[ j ], field.get()); + assertEquals("testing _3.0 " + _test_array[ j ], + ( byte ) (_test_array[ j ] % 256), array[ 0 ]); + assertEquals("testing _3.1 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 8) % 256), + array[ 1 ]); + assertEquals("testing _3.2 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 16) % 256), + array[ 2 ]); + assertEquals("testing _3.3 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 24) % 256), + array[ 3 ]); + } + } + + /** + * Test readFromBytes + */ + + public void testReadFromBytes() + { + IntegerField field = new IntegerField(1); + byte[] array = new byte[ 4 ]; + + try + { + field.readFromBytes(array); + fail("should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new IntegerField(0); + for (int j = 0; j < _test_array.length; j++) + { + array[ 0 ] = ( byte ) (_test_array[ j ] % 256); + array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256); + array[ 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256); + array[ 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256); + field.readFromBytes(array); + assertEquals("testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * Test readFromStream + * + * @exception IOException + */ + + public void testReadFromStream() + throws IOException + { + IntegerField field = new IntegerField(0); + byte[] buffer = new byte[ _test_array.length * 4 ]; + + for (int j = 0; j < _test_array.length; j++) + { + buffer[ (j * 4) + 0 ] = ( byte ) (_test_array[ j ] % 256); + buffer[ (j * 4) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256); + buffer[ (j * 4) + 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256); + buffer[ (j * 4) + 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256); + } + ByteArrayInputStream stream = new ByteArrayInputStream(buffer); + + for (int j = 0; j < buffer.length / 4; j++) + { + field.readFromStream(stream); + assertEquals("Testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * test writeToBytes + */ + + public void testWriteToBytes() + { + IntegerField field = new IntegerField(0); + byte[] array = new byte[ 4 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + field.writeToBytes(array); + int val = array[ 3 ] << 24; + + val &= 0xFF000000; + val += (array[ 2 ] << 16) & 0x00FF0000; + val += (array[ 1 ] << 8) & 0x0000FF00; + val += (array[ 0 ] & 0x000000FF); + assertEquals("testing ", _test_array[ j ], val); + } + } + + /** + * Main + * + * @param args + */ + + public static void main(String [] args) + { + System.out.println("Testing util.IntegerField functionality"); + junit.textui.TestRunner.run(TestIntegerField.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestLittleEndian.java b/src/testcases/org/apache/poi/util/TestLittleEndian.java new file mode 100644 index 0000000000..a6e576a20a --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestLittleEndian.java @@ -0,0 +1,445 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import org.apache.poi.util.LittleEndian.BufferUnderrunException; + +import java.io.*; + +import junit.framework.*; + +/** + * Class to test LittleEndian functionality + * + * @author Marc Johnson + */ + +public class TestLittleEndian + extends TestCase +{ + + /** + * Constructor TestLittleEndian + * + * @param name + */ + + public TestLittleEndian(String name) + { + super(name); + } + + /** + * test the getShort() method + */ + + public void testGetShort() + { + byte[] testdata = new byte[ LittleEndian.SHORT_SIZE + 1 ]; + + testdata[ 0 ] = 0x01; + testdata[ 1 ] = ( byte ) 0xFF; + testdata[ 2 ] = 0x02; + short expected[] = new short[ 2 ]; + + expected[ 0 ] = ( short ) 0xFF01; + expected[ 1 ] = 0x02FF; + assertEquals(expected[ 0 ], LittleEndian.getShort(testdata)); + assertEquals(expected[ 1 ], LittleEndian.getShort(testdata, 1)); + } + + private static final byte[] _double_array = + { + 56, 50, -113, -4, -63, -64, -13, 63, 76, -32, -42, -35, 60, -43, 3, 64 + }; + private static final double[] _doubles = + { + 1.23456, 2.47912 + }; + + /** + * test the getDouble() method + */ + + public void testGetDouble() + { + assertEquals(_doubles[ 0 ], LittleEndian.getDouble(_double_array), + 0.000001); + assertEquals(_doubles[ 1 ], LittleEndian + .getDouble(_double_array, LittleEndian.DOUBLE_SIZE), 0.000001); + } + + /** + * test the getInt() method + */ + + public void testGetInt() + { + byte[] testdata = new byte[ LittleEndian.INT_SIZE + 1 ]; + + testdata[ 0 ] = 0x01; + testdata[ 1 ] = ( byte ) 0xFF; + testdata[ 2 ] = ( byte ) 0xFF; + testdata[ 3 ] = ( byte ) 0xFF; + testdata[ 4 ] = 0x02; + int expected[] = new int[ 2 ]; + + expected[ 0 ] = 0xFFFFFF01; + expected[ 1 ] = 0x02FFFFFF; + assertEquals(expected[ 0 ], LittleEndian.getInt(testdata)); + assertEquals(expected[ 1 ], LittleEndian.getInt(testdata, 1)); + } + + /** + * test the getLong method + */ + + public void testGetLong() + { + byte[] testdata = new byte[ LittleEndian.LONG_SIZE + 1 ]; + + testdata[ 0 ] = 0x01; + testdata[ 1 ] = ( byte ) 0xFF; + testdata[ 2 ] = ( byte ) 0xFF; + testdata[ 3 ] = ( byte ) 0xFF; + testdata[ 4 ] = ( byte ) 0xFF; + testdata[ 5 ] = ( byte ) 0xFF; + testdata[ 6 ] = ( byte ) 0xFF; + testdata[ 7 ] = ( byte ) 0xFF; + testdata[ 8 ] = 0x02; + long expected[] = new long[ 2 ]; + + expected[ 0 ] = 0xFFFFFFFFFFFFFF01L; + expected[ 1 ] = 0x02FFFFFFFFFFFFFFL; + assertEquals(expected[ 0 ], LittleEndian.getLong(testdata)); + assertEquals(expected[ 1 ], LittleEndian.getLong(testdata, 1)); + } + + /** + * test the PutShort method + */ + + public void testPutShort() + { + byte[] expected = new byte[ LittleEndian.SHORT_SIZE + 1 ]; + + expected[ 0 ] = 0x01; + expected[ 1 ] = ( byte ) 0xFF; + expected[ 2 ] = 0x02; + byte[] received = new byte[ LittleEndian.SHORT_SIZE + 1 ]; + short testdata[] = new short[ 2 ]; + + testdata[ 0 ] = ( short ) 0xFF01; + testdata[ 1 ] = 0x02FF; + LittleEndian.putShort(received, testdata[ 0 ]); + assertTrue(ba_equivalent(received, expected, 0, + LittleEndian.SHORT_SIZE)); + LittleEndian.putShort(received, 1, testdata[ 1 ]); + assertTrue(ba_equivalent(received, expected, 1, + LittleEndian.SHORT_SIZE)); + } + + /** + * test the putInt method + */ + + public void testPutInt() + { + byte[] expected = new byte[ LittleEndian.INT_SIZE + 1 ]; + + expected[ 0 ] = 0x01; + expected[ 1 ] = ( byte ) 0xFF; + expected[ 2 ] = ( byte ) 0xFF; + expected[ 3 ] = ( byte ) 0xFF; + expected[ 4 ] = 0x02; + byte[] received = new byte[ LittleEndian.INT_SIZE + 1 ]; + int testdata[] = new int[ 2 ]; + + testdata[ 0 ] = 0xFFFFFF01; + testdata[ 1 ] = 0x02FFFFFF; + LittleEndian.putInt(received, testdata[ 0 ]); + assertTrue(ba_equivalent(received, expected, 0, + LittleEndian.INT_SIZE)); + LittleEndian.putInt(received, 1, testdata[ 1 ]); + assertTrue(ba_equivalent(received, expected, 1, + LittleEndian.INT_SIZE)); + } + + /** + * test the putDouble methods + */ + + public void testPutDouble() + { + byte[] received = new byte[ LittleEndian.DOUBLE_SIZE + 1 ]; + + LittleEndian.putDouble(received, _doubles[ 0 ]); + assertTrue(ba_equivalent(received, _double_array, 0, + LittleEndian.DOUBLE_SIZE)); + LittleEndian.putDouble(received, 1, _doubles[ 1 ]); + byte[] expected = new byte[ LittleEndian.DOUBLE_SIZE + 1 ]; + + System.arraycopy(_double_array, LittleEndian.DOUBLE_SIZE, expected, + 1, LittleEndian.DOUBLE_SIZE); + assertTrue(ba_equivalent(received, expected, 1, + LittleEndian.DOUBLE_SIZE)); + } + + /** + * test the putLong method + */ + + public void testPutLong() + { + byte[] expected = new byte[ LittleEndian.LONG_SIZE + 1 ]; + + expected[ 0 ] = 0x01; + expected[ 1 ] = ( byte ) 0xFF; + expected[ 2 ] = ( byte ) 0xFF; + expected[ 3 ] = ( byte ) 0xFF; + expected[ 4 ] = ( byte ) 0xFF; + expected[ 5 ] = ( byte ) 0xFF; + expected[ 6 ] = ( byte ) 0xFF; + expected[ 7 ] = ( byte ) 0xFF; + expected[ 8 ] = 0x02; + byte[] received = new byte[ LittleEndian.LONG_SIZE + 1 ]; + long testdata[] = new long[ 2 ]; + + testdata[ 0 ] = 0xFFFFFFFFFFFFFF01L; + testdata[ 1 ] = 0x02FFFFFFFFFFFFFFL; + LittleEndian.putLong(received, testdata[ 0 ]); + assertTrue(ba_equivalent(received, expected, 0, + LittleEndian.LONG_SIZE)); + LittleEndian.putLong(received, 1, testdata[ 1 ]); + assertTrue(ba_equivalent(received, expected, 1, + LittleEndian.LONG_SIZE)); + } + + private static byte[] _good_array = + { + 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, + 0x02, 0x01, 0x02, 0x01, 0x02 + }; + private static byte[] _bad_array = + { + 0x01 + }; + + /** + * test the readShort method + */ + + public void testReadShort() + throws IOException + { + short expected_value = 0x0201; + InputStream stream = new ByteArrayInputStream(_good_array); + int count = 0; + + while (true) + { + short value = LittleEndian.readShort(stream); + + if (value == 0) + { + break; + } + assertEquals(value, expected_value); + count++; + } + assertEquals(count, + _good_array.length / LittleEndianConsts.SHORT_SIZE); + stream = new ByteArrayInputStream(_bad_array); + try + { + LittleEndian.readShort(stream); + fail("Should have caught BufferUnderrunException"); + } + catch (BufferUnderrunException ignored) + { + + // as expected + } + } + + /** + * test the readInt method + */ + + public void testReadInt() + throws IOException + { + int expected_value = 0x02010201; + InputStream stream = new ByteArrayInputStream(_good_array); + int count = 0; + + while (true) + { + int value = LittleEndian.readInt(stream); + + if (value == 0) + { + break; + } + assertEquals(value, expected_value); + count++; + } + assertEquals(count, _good_array.length / LittleEndianConsts.INT_SIZE); + stream = new ByteArrayInputStream(_bad_array); + try + { + LittleEndian.readInt(stream); + fail("Should have caught BufferUnderrunException"); + } + catch (BufferUnderrunException ignored) + { + + // as expected + } + } + + /** + * test the readLong method + */ + + public void testReadLong() + throws IOException + { + long expected_value = 0x0201020102010201L; + InputStream stream = new ByteArrayInputStream(_good_array); + int count = 0; + + while (true) + { + long value = LittleEndian.readLong(stream); + + if (value == 0) + { + break; + } + assertEquals(value, expected_value); + count++; + } + assertEquals(count, + _good_array.length / LittleEndianConsts.LONG_SIZE); + stream = new ByteArrayInputStream(_bad_array); + try + { + LittleEndian.readLong(stream); + fail("Should have caught BufferUnderrunException"); + } + catch (BufferUnderrunException ignored) + { + + // as expected + } + } + + /** + * test the readFromStream method + */ + + public void testReadFromStream() + throws IOException + { + InputStream stream = new ByteArrayInputStream(_good_array); + byte[] value = LittleEndian.readFromStream(stream, + _good_array.length); + + assertTrue(ba_equivalent(value, _good_array, 0, _good_array.length)); + stream = new ByteArrayInputStream(_good_array); + try + { + value = LittleEndian.readFromStream(stream, + _good_array.length + 1); + fail("Should have caught BufferUnderrunException"); + } + catch (BufferUnderrunException ignored) + { + + // as expected + } + } + + private boolean ba_equivalent(byte [] received, byte [] expected, + int offset, int size) + { + boolean result = true; + + for (int j = offset; j < offset + size; j++) + { + if (received[ j ] != expected[ j ]) + { + System.out.println("difference at index " + j); + result = false; + break; + } + } + return result; + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing util.LittleEndian functionality"); + junit.textui.TestRunner.run(TestLittleEndian.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestLongField.java b/src/testcases/org/apache/poi/util/TestLongField.java new file mode 100644 index 0000000000..aa000f5a76 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestLongField.java @@ -0,0 +1,307 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.io.*; + +/** + * Test LongField code + * + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestLongField + extends TestCase +{ + + /** + * Constructor + * + * @param name + */ + + public TestLongField(String name) + { + super(name); + } + + static private final long[] _test_array = + { + Long.MIN_VALUE, -1L, 0L, 1L, Long.MAX_VALUE + }; + + /** + * Test constructors. + */ + + public void testConstructors() + { + try + { + new LongField(-1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + LongField field = new LongField(2); + + assertEquals(0L, field.get()); + try + { + new LongField(-1, 1L); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new LongField(2, 0x123456789ABCDEF0L); + assertEquals(0x123456789ABCDEF0L, field.get()); + byte[] array = new byte[ 10 ]; + + try + { + new LongField(-1, 1L, array); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new LongField(2, 0x123456789ABCDEF0L, array); + assertEquals(0x123456789ABCDEF0L, field.get()); + assertEquals(( byte ) 0xF0, array[ 2 ]); + assertEquals(( byte ) 0xDE, array[ 3 ]); + assertEquals(( byte ) 0xBC, array[ 4 ]); + assertEquals(( byte ) 0x9A, array[ 5 ]); + assertEquals(( byte ) 0x78, array[ 6 ]); + assertEquals(( byte ) 0x56, array[ 7 ]); + assertEquals(( byte ) 0x34, array[ 8 ]); + assertEquals(( byte ) 0x12, array[ 9 ]); + array = new byte[ 9 ]; + try + { + new LongField(2, 5L, array); + fail("should have gotten ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + for (int j = 0; j < _test_array.length; j++) + { + array = new byte[ 8 ]; + new LongField(0, _test_array[ j ], array); + assertEquals(_test_array[ j ], new LongField(0, array).get()); + } + } + + /** + * Test set() methods + */ + + public void testSet() + { + LongField field = new LongField(0); + byte[] array = new byte[ 8 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + assertEquals("testing _1 " + j, _test_array[ j ], field.get()); + field = new LongField(0); + field.set(_test_array[ j ], array); + assertEquals("testing _2 ", _test_array[ j ], field.get()); + assertEquals("testing _3.0 " + _test_array[ j ], + ( byte ) (_test_array[ j ] % 256), array[ 0 ]); + assertEquals("testing _3.1 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 8) % 256), + array[ 1 ]); + assertEquals("testing _3.2 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 16) % 256), + array[ 2 ]); + assertEquals("testing _3.3 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 24) % 256), + array[ 3 ]); + assertEquals("testing _3.4 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 32) % 256), + array[ 4 ]); + assertEquals("testing _3.5 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 40) % 256), + array[ 5 ]); + assertEquals("testing _3.6 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 48) % 256), + array[ 6 ]); + assertEquals("testing _3.7 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 56) % 256), + array[ 7 ]); + } + } + + /** + * Test readFromBytes + */ + + public void testReadFromBytes() + { + LongField field = new LongField(1); + byte[] array = new byte[ 8 ]; + + try + { + field.readFromBytes(array); + fail("should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new LongField(0); + for (int j = 0; j < _test_array.length; j++) + { + array[ 0 ] = ( byte ) (_test_array[ j ] % 256); + array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256); + array[ 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256); + array[ 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256); + array[ 4 ] = ( byte ) ((_test_array[ j ] >> 32) % 256); + array[ 5 ] = ( byte ) ((_test_array[ j ] >> 40) % 256); + array[ 6 ] = ( byte ) ((_test_array[ j ] >> 48) % 256); + array[ 7 ] = ( byte ) ((_test_array[ j ] >> 56) % 256); + field.readFromBytes(array); + assertEquals("testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * Test readFromStream + * + * @exception IOException + */ + + public void testReadFromStream() + throws IOException + { + LongField field = new LongField(0); + byte[] buffer = new byte[ _test_array.length * 8 ]; + + for (int j = 0; j < _test_array.length; j++) + { + buffer[ (j * 8) + 0 ] = ( byte ) (_test_array[ j ] % 256); + buffer[ (j * 8) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256); + buffer[ (j * 8) + 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256); + buffer[ (j * 8) + 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256); + buffer[ (j * 8) + 4 ] = ( byte ) ((_test_array[ j ] >> 32) % 256); + buffer[ (j * 8) + 5 ] = ( byte ) ((_test_array[ j ] >> 40) % 256); + buffer[ (j * 8) + 6 ] = ( byte ) ((_test_array[ j ] >> 48) % 256); + buffer[ (j * 8) + 7 ] = ( byte ) ((_test_array[ j ] >> 56) % 256); + } + ByteArrayInputStream stream = new ByteArrayInputStream(buffer); + + for (int j = 0; j < buffer.length / 8; j++) + { + field.readFromStream(stream); + assertEquals("Testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * test writeToBytes + */ + + public void testWriteToBytes() + { + LongField field = new LongField(0); + byte[] array = new byte[ 8 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + field.writeToBytes(array); + long val = (( long ) array[ 7 ]) << 56; + + val &= 0xFF00000000000000L; + val += ((( long ) array[ 6 ]) << 48) & 0x00FF000000000000L; + val += ((( long ) array[ 5 ]) << 40) & 0x0000FF0000000000L; + val += ((( long ) array[ 4 ]) << 32) & 0x000000FF00000000L; + val += ((( long ) array[ 3 ]) << 24) & 0x00000000FF000000L; + val += ((( long ) array[ 2 ]) << 16) & 0x0000000000FF0000L; + val += ((( long ) array[ 1 ]) << 8) & 0x000000000000FF00L; + val += (array[ 0 ] & 0x00000000000000FFL); + assertEquals("testing ", _test_array[ j ], val); + } + } + + /** + * Main + * + * @param args + */ + + public static void main(String [] args) + { + System.out.println("Testing util.LongField functionality"); + junit.textui.TestRunner.run(TestLongField.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestPOILogFactory.java b/src/testcases/org/apache/poi/util/TestPOILogFactory.java new file mode 100644 index 0000000000..6e57520a13 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestPOILogFactory.java @@ -0,0 +1,141 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import org.apache.log4j.Category; + +import junit.framework.*; + +import java.io.*; + +/** + * @author Marc Johnson (mjohnson at apache dot org) + * @author Glen Stampoultzis (gstamp at iprimus dot com dot au) + */ + +public class TestPOILogFactory + extends TestCase +{ + private String _test_file_path; + private static final String _test_file_path_property = + "UTIL.testdata.path"; + private static final String _fs = + System.getProperty("file.separator"); + + /** + * Creates new TestPOILogFactory + * + * @param name + */ + + public TestPOILogFactory(String name) + { + super(name); + _test_file_path = System.getProperty(_test_file_path_property) + _fs; + } + + /** + * test log creation + * + * @exception IOException + */ + + public void testLog() + throws IOException + { + + // empty log files + // check the path exists first + assertTrue("Checking for existance of test property directory was " + + _test_file_path, new File(_test_file_path).exists()); + new File("p1.log").delete(); + new File("p2.log").delete(); + POILogFactory f1 = new POILogFactory(_test_file_path + + "test_properties1", "foo"); + POILogFactory f2 = new POILogFactory(_test_file_path + + "test_properties2", "bar"); + POILogger l1 = f1.getLogger(f1.getClass()); + POILogger l2 = f2.getLogger(f2.getClass()); + + l1.log(POILogger.WARN, "test1"); + l2.log(POILogger.WARN, "test2"); + + // It appears necessary that sleep is required for files to be + // written on Win2000. Tried manually closing appenders with + // no luck. + try + { + Thread.sleep(4000); + } + catch (InterruptedException letBuffersFlush) + { + } + assertTrue(new File("p1.log").length() != 0); + assertTrue(new File("p2.log").length() != 0); + } + + /** + * main method to run the unit tests + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing util.POILogFactory functionality"); + junit.textui.TestRunner.run(TestPOILogFactory.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestPOILogger.java b/src/testcases/org/apache/poi/util/TestPOILogger.java new file mode 100644 index 0000000000..b3c1128020 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestPOILogger.java @@ -0,0 +1,181 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.TestCase; + +import java.io.File; +import java.io.FileInputStream; + +/** + * Tests the log class. + * + * @author Glen Stampoultzis (gstamp at iprimus dot com dot au) + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestPOILogger + extends TestCase +{ + private String _test_file_path; + private static final String _test_file_path_property = + "UTIL.testdata.path"; + private static final String _fs = + System.getProperty("file.separator"); + private static final String _log_file = "POILogger.log"; + + /** + * Constructor TestPOILogger + * + * + * @param s + * + */ + + public TestPOILogger(String s) + { + super(s); + } + + /** + * Method setUp + * + * + * @exception Exception + * + */ + + protected void setUp() + throws Exception + { + super.setUp(); + _test_file_path = System.getProperty(_test_file_path_property) + _fs; + } + + /** + * Test different types of log output. + * + * @exception Exception + */ + + public void testVariousLogTypes() + throws Exception + { + assertTrue( + "Checking for existance of test property directory, looking for " + + _test_file_path, new File(_test_file_path).exists()); + new File(_log_file).delete(); + POILogFactory f1 = new POILogFactory(_test_file_path + + "test_properties3", "foo"); + POILogger log = f1.getLogger(getClass()); + + log.log(POILogger.WARN, "Test = ", new Integer(1)); + log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %", + "2", new Integer(3)); + log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %", + new int[] + { + 4, 5 + }); + log.logFormatted(POILogger.ERROR, + "Test param 1 = %1.1, param 2 = %0.1", new double[] + { + 4, 5.23 + }); + + // It appears necessary that sleep is required for files to be + // written on Win2000. Tried manually closing appenders with + // no luck. + try + { + Thread.sleep(4000); + } + catch (InterruptedException letBuffersFlush) + { + } + String s = fileRead(_log_file); + + assertTrue(s.indexOf("Test = 1") > 0); + assertTrue(s.indexOf("Test param 1 = 2, param 2 = 3") > 0); + assertTrue(s.indexOf("Test param 1 = 4, param 2 = 5") > 0); + assertTrue(s.indexOf("Test param 1 = 4, param 2 = 5.2") > 0); + } + + /** + * Reads the contents of a file. + * + * @param fileName The name of the file to read. + * @return The file contents or null if read failed. + * + * @exception Exception + */ + + public String fileRead(String fileName) + throws Exception + { + StringBuffer buf = new StringBuffer(); + FileInputStream in = new FileInputStream(fileName); + int count; + byte[] b = new byte[ 512 ]; + + while ((count = in.read(b)) > 0) // blocking read + { + buf.append(new String(b, 0, count)); + } + in.close(); + return buf.toString(); + } +} diff --git a/src/testcases/org/apache/poi/util/TestShortField.java b/src/testcases/org/apache/poi/util/TestShortField.java new file mode 100644 index 0000000000..810fef0177 --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestShortField.java @@ -0,0 +1,266 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.io.*; + +/** + * Test ShortField code + * + * @author Marc Johnson (mjohnson at apache dot org) + */ + +public class TestShortField + extends TestCase +{ + + /** + * Constructor + * + * @param name + */ + + public TestShortField(String name) + { + super(name); + } + + static private final short[] _test_array = + { + Short.MIN_VALUE, ( short ) -1, ( short ) 0, ( short ) 1, + Short.MAX_VALUE + }; + + /** + * Test constructors. + */ + + public void testConstructors() + { + try + { + new ShortField(-1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + ShortField field = new ShortField(2); + + assertEquals(0, field.get()); + try + { + new ShortField(-1, ( short ) 1); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new ShortField(2, ( short ) 0x1234); + assertEquals(0x1234, field.get()); + byte[] array = new byte[ 4 ]; + + try + { + new ShortField(-1, ( short ) 1, array); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new ShortField(2, ( short ) 0x1234, array); + assertEquals(( short ) 0x1234, field.get()); + assertEquals(( byte ) 0x34, array[ 2 ]); + assertEquals(( byte ) 0x12, array[ 3 ]); + array = new byte[ 3 ]; + try + { + new ShortField(2, ( short ) 5, array); + fail("should have gotten ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + for (int j = 0; j < _test_array.length; j++) + { + array = new byte[ 2 ]; + new ShortField(0, _test_array[ j ], array); + assertEquals(_test_array[ j ], new ShortField(0, array).get()); + } + } + + /** + * Test set() methods + */ + + public void testSet() + { + ShortField field = new ShortField(0); + byte[] array = new byte[ 2 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + assertEquals("testing _1 " + j, _test_array[ j ], field.get()); + field = new ShortField(0); + field.set(_test_array[ j ], array); + assertEquals("testing _2 ", _test_array[ j ], field.get()); + assertEquals("testing _3.0 " + _test_array[ j ], + ( byte ) (_test_array[ j ] % 256), array[ 0 ]); + assertEquals("testing _3.1 " + _test_array[ j ], + ( byte ) ((_test_array[ j ] >> 8) % 256), + array[ 1 ]); + } + } + + /** + * Test readFromBytes + */ + + public void testReadFromBytes() + { + ShortField field = new ShortField(1); + byte[] array = new byte[ 2 ]; + + try + { + field.readFromBytes(array); + fail("should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored_e) + { + + // as expected + } + field = new ShortField(0); + for (int j = 0; j < _test_array.length; j++) + { + array[ 0 ] = ( byte ) (_test_array[ j ] % 256); + array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256); + field.readFromBytes(array); + assertEquals("testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * Test readFromStream + * + * @exception IOException + */ + + public void testReadFromStream() + throws IOException + { + ShortField field = new ShortField(0); + byte[] buffer = new byte[ _test_array.length * 2 ]; + + for (int j = 0; j < _test_array.length; j++) + { + buffer[ (j * 2) + 0 ] = ( byte ) (_test_array[ j ] % 256); + buffer[ (j * 2) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256); + } + ByteArrayInputStream stream = new ByteArrayInputStream(buffer); + + for (int j = 0; j < buffer.length / 2; j++) + { + field.readFromStream(stream); + assertEquals("Testing " + j, _test_array[ j ], field.get()); + } + } + + /** + * test writeToBytes + */ + + public void testWriteToBytes() + { + ShortField field = new ShortField(0); + byte[] array = new byte[ 2 ]; + + for (int j = 0; j < _test_array.length; j++) + { + field.set(_test_array[ j ]); + field.writeToBytes(array); + short val = ( short ) (array[ 1 ] << 8); + + val &= ( short ) 0xFF00; + val += ( short ) (array[ 0 ] & 0x00FF); + assertEquals("testing ", _test_array[ j ], val); + } + } + + /** + * Main + * + * @param args + */ + + public static void main(String [] args) + { + System.out.println("Testing util.ShortField functionality"); + junit.textui.TestRunner.run(TestShortField.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestShortList.java b/src/testcases/org/apache/poi/util/TestShortList.java new file mode 100644 index 0000000000..87ca2ce5db --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestShortList.java @@ -0,0 +1,724 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +/** + * Class to test ShortList + * + * @author Marc Johnson + */ + +public class TestShortList + extends TestCase +{ + + /** + * Constructor TestShortList + * + * @param name + */ + + public TestShortList(String name) + { + super(name); + } + + /** + * test the various ShortListconstructors + */ + + public void testConstructors() + { + ShortList list = new ShortList(); + + assertTrue(list.isEmpty()); + list.add(( short ) 0); + list.add(( short ) 1); + ShortList list2 = new ShortList(list); + + assertEquals(list, list2); + ShortList list3 = new ShortList(2); + + assertTrue(list3.isEmpty()); + } + + /** + * test the add method + */ + + public void testAdd() + { + ShortList list = new ShortList(); + short[] testArray = + { + 0, 1, 2, 3, 5 + }; + + for (int j = 0; j < testArray.length; j++) + { + list.add(testArray[ j ]); + } + for (int j = 0; j < testArray.length; j++) + { + assertEquals(testArray[ j ], list.get(j)); + } + assertEquals(testArray.length, list.size()); + + // add at the beginning + list.add(0, ( short ) -1); + assertEquals(( short ) -1, list.get(0)); + assertEquals(testArray.length + 1, list.size()); + for (int j = 0; j < testArray.length; j++) + { + assertEquals(testArray[ j ], list.get(j + 1)); + } + + // add in the middle + list.add(5, ( short ) 4); + assertEquals(( short ) 4, list.get(5)); + assertEquals(testArray.length + 2, list.size()); + for (int j = 0; j < list.size(); j++) + { + assertEquals(( short ) (j - 1), list.get(j)); + } + + // add at the end + list.add(list.size(), ( short ) 6); + assertEquals(testArray.length + 3, list.size()); + for (int j = 0; j < list.size(); j++) + { + assertEquals(( short ) (j - 1), list.get(j)); + } + + // add past end + try + { + list.add(list.size() + 1, ( short ) 8); + fail("should have thrown exception"); + } + catch (IndexOutOfBoundsException e) + { + + // as expected + } + + // test growth + list = new ShortList(0); + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + assertEquals(1000, list.size()); + for (short j = 0; j < 1000; j++) + { + assertEquals(j, list.get(j)); + } + list = new ShortList(0); + for (short j = 0; j < 1000; j++) + { + list.add(0, j); + } + assertEquals(1000, list.size()); + for (short j = 0; j < 1000; j++) + { + assertEquals(j, list.get(999 - j)); + } + } + + /** + * test the addAll method + */ + + public void testAddAll() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 5; j++) + { + list.add(j); + } + ShortList list2 = new ShortList(0); + + list2.addAll(list); + list2.addAll(list); + assertEquals(2 * list.size(), list2.size()); + for (short j = 0; j < 5; j++) + { + assertEquals(list2.get(j), j); + assertEquals(list2.get(j + list.size()), j); + } + ShortList empty = new ShortList(); + int limit = list.size(); + + for (int j = 0; j < limit; j++) + { + assertTrue(list.addAll(j, empty)); + assertEquals(limit, list.size()); + } + try + { + list.addAll(limit + 1, empty); + fail("should have thrown an exception"); + } + catch (IndexOutOfBoundsException e) + { + + // as expected + } + + // try add at beginning + empty.addAll(0, list); + assertEquals(empty, list); + + // try in the middle + empty.addAll(1, list); + assertEquals(2 * list.size(), empty.size()); + assertEquals(list.get(0), empty.get(0)); + assertEquals(list.get(0), empty.get(1)); + assertEquals(list.get(1), empty.get(2)); + assertEquals(list.get(1), empty.get(6)); + assertEquals(list.get(2), empty.get(3)); + assertEquals(list.get(2), empty.get(7)); + assertEquals(list.get(3), empty.get(4)); + assertEquals(list.get(3), empty.get(8)); + assertEquals(list.get(4), empty.get(5)); + assertEquals(list.get(4), empty.get(9)); + + // try at the end + empty.addAll(empty.size(), list); + assertEquals(3 * list.size(), empty.size()); + assertEquals(list.get(0), empty.get(0)); + assertEquals(list.get(0), empty.get(1)); + assertEquals(list.get(0), empty.get(10)); + assertEquals(list.get(1), empty.get(2)); + assertEquals(list.get(1), empty.get(6)); + assertEquals(list.get(1), empty.get(11)); + assertEquals(list.get(2), empty.get(3)); + assertEquals(list.get(2), empty.get(7)); + assertEquals(list.get(2), empty.get(12)); + assertEquals(list.get(3), empty.get(4)); + assertEquals(list.get(3), empty.get(8)); + assertEquals(list.get(3), empty.get(13)); + assertEquals(list.get(4), empty.get(5)); + assertEquals(list.get(4), empty.get(9)); + assertEquals(list.get(4), empty.get(14)); + } + + /** + * test the clear method + */ + + public void testClear() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 500; j++) + { + list.add(j); + } + assertEquals(500, list.size()); + list.clear(); + assertEquals(0, list.size()); + for (short j = 0; j < 500; j++) + { + list.add(( short ) (j + 1)); + } + assertEquals(500, list.size()); + for (short j = 0; j < 500; j++) + { + assertEquals(j + 1, list.get(j)); + } + } + + /** + * test the contains method + */ + + public void testContains() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j += 2) + { + list.add(j); + } + for (short j = 0; j < 1000; j++) + { + if (j % 2 == 0) + { + assertTrue(list.contains(j)); + } + else + { + assertTrue(!list.contains(j)); + } + } + } + + /** + * test the containsAll method + */ + + public void testContainsAll() + { + ShortList list = new ShortList(); + + assertTrue(list.containsAll(list)); + for (short j = 0; j < 10; j++) + { + list.add(j); + } + ShortList list2 = new ShortList(list); + + assertTrue(list2.containsAll(list)); + assertTrue(list.containsAll(list2)); + list2.add(( short ) 10); + assertTrue(list2.containsAll(list)); + assertTrue(!list.containsAll(list2)); + list.add(( short ) 11); + assertTrue(!list2.containsAll(list)); + assertTrue(!list.containsAll(list2)); + } + + /** + * test the equals method + */ + + public void testEquals() + { + ShortList list = new ShortList(); + + assertEquals(list, list); + assertTrue(!list.equals(null)); + ShortList list2 = new ShortList(200); + + assertEquals(list, list2); + assertEquals(list2, list); + assertEquals(list.hashCode(), list2.hashCode()); + list.add(( short ) 0); + list.add(( short ) 1); + list2.add(( short ) 1); + list2.add(( short ) 0); + assertTrue(!list.equals(list2)); + list2.removeValue(( short ) 1); + list2.add(( short ) 1); + assertEquals(list, list2); + assertEquals(list2, list); + list2.add(( short ) 2); + assertTrue(!list.equals(list2)); + assertTrue(!list2.equals(list)); + } + + /** + * test the get method + */ + + public void testGet() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + for (short j = 0; j < 1001; j++) + { + try + { + assertEquals(j, list.get(j)); + if (j == 1000) + { + fail("should have gotten exception"); + } + } + catch (IndexOutOfBoundsException e) + { + if (j != 1000) + { + fail("unexpected IndexOutOfBoundsException"); + } + } + } + } + + /** + * test the indexOf method + */ + + public void testIndexOf() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(( short ) (j / 2)); + } + for (short j = 0; j < 1000; j++) + { + if (j < 500) + { + assertEquals(j * 2, list.indexOf(j)); + } + else + { + assertEquals(-1, list.indexOf(j)); + } + } + } + + /** + * test the isEmpty method + */ + + public void testIsEmpty() + { + ShortList list1 = new ShortList(); + ShortList list2 = new ShortList(1000); + ShortList list3 = new ShortList(list1); + + assertTrue(list1.isEmpty()); + assertTrue(list2.isEmpty()); + assertTrue(list3.isEmpty()); + list1.add(( short ) 1); + list2.add(( short ) 2); + list3 = new ShortList(list2); + assertTrue(!list1.isEmpty()); + assertTrue(!list2.isEmpty()); + assertTrue(!list3.isEmpty()); + list1.clear(); + list2.remove(0); + list3.removeValue(( short ) 2); + assertTrue(list1.isEmpty()); + assertTrue(list2.isEmpty()); + assertTrue(list3.isEmpty()); + } + + /** + * test the lastIndexOf method + */ + + public void testLastIndexOf() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(( short ) (j / 2)); + } + for (short j = 0; j < 1000; j++) + { + if (j < 500) + { + assertEquals(1 + j * 2, list.lastIndexOf(j)); + } + else + { + assertEquals(-1, list.indexOf(j)); + } + } + } + + /** + * test the remove method + */ + + public void testRemove() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + for (short j = 0; j < 1000; j++) + { + assertEquals(j, list.remove(0)); + assertEquals(( short ) (999 - j), list.size()); + } + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + for (short j = 0; j < 1000; j++) + { + assertEquals(( short ) (999 - j), + list.remove(( short ) (999 - j))); + assertEquals(999 - j, list.size()); + } + try + { + list.remove(0); + fail("should have caught IndexOutOfBoundsException"); + } + catch (IndexOutOfBoundsException e) + { + + // as expected + } + } + + /** + * test the removeValue method + */ + + public void testRemoveValue() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(( short ) (j / 2)); + } + for (short j = 0; j < 1000; j++) + { + if (j < 500) + { + assertTrue(list.removeValue(j)); + assertTrue(list.removeValue(j)); + } + assertTrue(!list.removeValue(j)); + } + } + + /** + * test the removeAll method + */ + + public void testRemoveAll() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + ShortList listCopy = new ShortList(list); + ShortList listOdd = new ShortList(); + ShortList listEven = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + if (j % 2 == 0) + { + listEven.add(j); + } + else + { + listOdd.add(j); + } + } + list.removeAll(listEven); + assertEquals(list, listOdd); + list.removeAll(listOdd); + assertTrue(list.isEmpty()); + listCopy.removeAll(listOdd); + assertEquals(listCopy, listEven); + listCopy.removeAll(listEven); + assertTrue(listCopy.isEmpty()); + } + + /** + * test the retainAll method + */ + + public void testRetainAll() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + ShortList listCopy = new ShortList(list); + ShortList listOdd = new ShortList(); + ShortList listEven = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + if (j % 2 == 0) + { + listEven.add(j); + } + else + { + listOdd.add(j); + } + } + list.retainAll(listOdd); + assertEquals(list, listOdd); + list.retainAll(listEven); + assertTrue(list.isEmpty()); + listCopy.retainAll(listEven); + assertEquals(listCopy, listEven); + listCopy.retainAll(listOdd); + assertTrue(listCopy.isEmpty()); + } + + /** + * test the set method + */ + + public void testSet() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + for (short j = 0; j < 1001; j++) + { + try + { + list.set(j, ( short ) (j + 1)); + if (j == 1000) + { + fail("Should have gotten exception"); + } + assertEquals(j + 1, list.get(j)); + } + catch (IndexOutOfBoundsException e) + { + if (j != 1000) + { + fail("premature exception"); + } + } + } + } + + /** + * test the size method + */ + + public void testSize() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + assertEquals(j, list.size()); + list.add(j); + assertEquals(j + 1, list.size()); + } + for (short j = 0; j < 1000; j++) + { + assertEquals(1000 - j, list.size()); + list.removeValue(j); + assertEquals(999 - j, list.size()); + } + } + + /** + * test the toArray method + */ + + public void testToArray() + { + ShortList list = new ShortList(); + + for (short j = 0; j < 1000; j++) + { + list.add(j); + } + short[] a1 = list.toArray(); + + assertEquals(a1.length, list.size()); + for (short j = 0; j < 1000; j++) + { + assertEquals(a1[ j ], list.get(j)); + } + short[] a2 = new short[ list.size() ]; + short[] a3 = list.toArray(a2); + + assertSame(a2, a3); + for (short j = 0; j < 1000; j++) + { + assertEquals(a2[ j ], list.get(j)); + } + short[] aShort = new short[ list.size() - 1 ]; + short[] aLong = new short[ list.size() + 1 ]; + short[] a4 = list.toArray(aShort); + short[] a5 = list.toArray(aLong); + + assertTrue(a4 != aShort); + assertTrue(a5 != aLong); + assertEquals(a4.length, list.size()); + for (short j = 0; j < 1000; j++) + { + assertEquals(a3[ j ], list.get(j)); + } + assertEquals(a5.length, list.size()); + for (short j = 0; j < 1000; j++) + { + assertEquals(a5[ j ], list.get(j)); + } + } + + /** + * main method to run the unit tests + * + * @param unused_args + */ + + public static void main(String [] unused_args) + { + System.out.println("Testing util.ShortList functionality"); + junit.textui.TestRunner.run(TestShortList.class); + } +} diff --git a/src/testcases/org/apache/poi/util/TestStringUtil.java b/src/testcases/org/apache/poi/util/TestStringUtil.java new file mode 100644 index 0000000000..dcb6c2539f --- /dev/null +++ b/src/testcases/org/apache/poi/util/TestStringUtil.java @@ -0,0 +1,315 @@ + +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ + +package org.apache.poi.util; + +import junit.framework.*; + +import java.text.NumberFormat; + +/** + * Unit test for StringUtil + * + * @author Marc Johnson (mjohnson at apache dot org + * @author Glen Stampoultzis (gstamp at iprimus dot com dot au) + */ + +public class TestStringUtil + extends TestCase +{ + + /** + * Creates new TestStringUtil + * + * @param name + */ + + public TestStringUtil(String name) + { + super(name); + } + + /** + * test simple form of getFromUnicode + */ + + public void testSimpleGetFromUnicode() + { + byte[] test_data = new byte[ 32 ]; + int index = 0; + + for (int k = 0; k < 16; k++) + { + test_data[ index++ ] = ( byte ) 0; + test_data[ index++ ] = ( byte ) ('a' + k); + } + assertEquals("abcdefghijklmnop", + StringUtil.getFromUnicode(test_data)); + } + + /** + * Test more complex form of getFromUnicode + */ + + public void testComplexGetFromUnicode() + { + byte[] test_data = new byte[ 32 ]; + int index = 0; + + for (int k = 0; k < 16; k++) + { + test_data[ index++ ] = ( byte ) 0; + test_data[ index++ ] = ( byte ) ('a' + k); + } + assertEquals("abcdefghijklmno", + StringUtil.getFromUnicode(test_data, 0, 15)); + assertEquals("bcdefghijklmnop", + StringUtil.getFromUnicode(test_data, 2, 15)); + try + { + StringUtil.getFromUnicode(test_data, -1, 16); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored) + { + + // as expected + } + try + { + StringUtil.getFromUnicode(test_data, 32, 16); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored) + { + + // as expected + } + try + { + StringUtil.getFromUnicode(test_data, 1, 16); + fail("Should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + + // as expected + } + try + { + StringUtil.getFromUnicode(test_data, 1, -1); + fail("Should have caught IllegalArgumentException"); + } + catch (IllegalArgumentException ignored) + { + + // as expected + } + } + + /** + * Test putCompressedUnicode + */ + + public void testPutCompressedUnicode() + { + byte[] output = new byte[ 100 ]; + byte[] expected_output = + { + ( byte ) 'H', ( byte ) 'e', ( byte ) 'l', ( byte ) 'l', + ( byte ) 'o', ( byte ) ' ', ( byte ) 'W', ( byte ) 'o', + ( byte ) 'r', ( byte ) 'l', ( byte ) 'd', ( byte ) 0xAE + }; + String input = new String(expected_output); + + StringUtil.putCompressedUnicode(input, output, 0); + for (int j = 0; j < expected_output.length; j++) + { + assertEquals("testing offset " + j, expected_output[ j ], + output[ j ]); + } + StringUtil.putCompressedUnicode(input, output, + 100 - expected_output.length); + for (int j = 0; j < expected_output.length; j++) + { + assertEquals("testing offset " + j, expected_output[ j ], + output[ 100 + j - expected_output.length ]); + } + try + { + StringUtil.putCompressedUnicode(input, output, + 101 - expected_output.length); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored) + { + + // as expected + } + } + + /** + * Test putUncompressedUnicode + */ + + public void testPutUncompressedUnicode() + { + byte[] output = new byte[ 100 ]; + String input = "Hello World"; + byte[] expected_output = + { + ( byte ) 'H', ( byte ) 0, ( byte ) 'e', ( byte ) 0, ( byte ) 'l', + ( byte ) 0, ( byte ) 'l', ( byte ) 0, ( byte ) 'o', ( byte ) 0, + ( byte ) ' ', ( byte ) 0, ( byte ) 'W', ( byte ) 0, ( byte ) 'o', + ( byte ) 0, ( byte ) 'r', ( byte ) 0, ( byte ) 'l', ( byte ) 0, + ( byte ) 'd', ( byte ) 0 + }; + + StringUtil.putUncompressedUnicode(input, output, 0); + for (int j = 0; j < expected_output.length; j++) + { + assertEquals("testing offset " + j, expected_output[ j ], + output[ j ]); + } + StringUtil.putUncompressedUnicode(input, output, + 100 - expected_output.length); + for (int j = 0; j < expected_output.length; j++) + { + assertEquals("testing offset " + j, expected_output[ j ], + output[ 100 + j - expected_output.length ]); + } + try + { + StringUtil.putUncompressedUnicode(input, output, + 101 - expected_output.length); + fail("Should have caught ArrayIndexOutOfBoundsException"); + } + catch (ArrayIndexOutOfBoundsException ignored) + { + + // as expected + } + } + + public void testFormat() + throws Exception + { + assertEquals("This is a test " + fmt(1.2345, 2, 2), + StringUtil.format("This is a test %2.2", new Object[] + { + new Double(1.2345) + })); + assertEquals("This is a test " + fmt(1.2345, -1, 3), + StringUtil.format("This is a test %.3", new Object[] + { + new Double(1.2345) + })); + assertEquals("This is a great test " + fmt(1.2345, -1, 3), + StringUtil.format("This is a % test %.3", new Object[] + { + "great", new Double(1.2345) + })); + assertEquals("This is a test 1", + StringUtil.format("This is a test %", new Object[] + { + new Integer(1) + })); + assertEquals("This is a test 1", + StringUtil.format("This is a test %", new Object[] + { + new Integer(1), new Integer(1) + })); + assertEquals("This is a test 1.x", + StringUtil.format("This is a test %1.x", new Object[] + { + new Integer(1) + })); + assertEquals("This is a test ?missing data?1.x", + StringUtil.format("This is a test %1.x", new Object[] + { + })); + assertEquals("This is a test %1.x", + StringUtil.format("This is a test \\%1.x", new Object[] + { + })); + } + + private String fmt(double num, int minIntDigits, int maxFracDigitis) + { + NumberFormat nf = NumberFormat.getInstance(); + + if (minIntDigits != -1) + { + nf.setMinimumIntegerDigits(minIntDigits); + } + if (maxFracDigitis != -1) + { + nf.setMaximumFractionDigits(maxFracDigitis); + } + return nf.format(num); + } + + /** + * main + * + * @param ignored_args + */ + + public static void main(String [] ignored_args) + { + System.out.println("Testing util.StringUtil functionality"); + junit.textui.TestRunner.run(TestStringUtil.class); + } +} diff --git a/src/testcases/org/apache/poi/util/data/test_properties1 b/src/testcases/org/apache/poi/util/data/test_properties1 new file mode 100755 index 0000000000..41385a88ba --- /dev/null +++ b/src/testcases/org/apache/poi/util/data/test_properties1 @@ -0,0 +1,11 @@ +# Set root category priority to DEBUG and its only appender to A1. +log4j.rootCategory=DEBUG, A1 + +# A1 is set to be a FileAppender. +log4j.appender.A1=org.apache.log4j.FileAppender +log4j.appender.A1.File=p1.log + +# A1 uses PatternLayout. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +#log4j.category.org.apache.cocoon.poi=WARN
\ No newline at end of file diff --git a/src/testcases/org/apache/poi/util/data/test_properties2 b/src/testcases/org/apache/poi/util/data/test_properties2 new file mode 100755 index 0000000000..5e0e2c5dd9 --- /dev/null +++ b/src/testcases/org/apache/poi/util/data/test_properties2 @@ -0,0 +1,11 @@ +# Set root category priority to DEBUG and its only appender to A2. +log4j.rootCategory=DEBUG, A2 + +# A2 is set to be a FileAppender. +log4j.appender.A2=org.apache.log4j.FileAppender +log4j.appender.A2.File=p2.log + +# A2 uses PatternLayout. +log4j.appender.A2.layout=org.apache.log4j.PatternLayout +log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +#log4j.category.org.apache.cocoon.poi=WARN
\ No newline at end of file diff --git a/src/testcases/org/apache/poi/util/data/test_properties3 b/src/testcases/org/apache/poi/util/data/test_properties3 new file mode 100755 index 0000000000..cb75ef0f97 --- /dev/null +++ b/src/testcases/org/apache/poi/util/data/test_properties3 @@ -0,0 +1,11 @@ +# Set root category priority to DEBUG and its only appender to A3. +log4j.rootCategory=DEBUG, A3 + +# A3 is set to be a FileAppender. +log4j.appender.A3=org.apache.log4j.FileAppender +log4j.appender.A3.File=POILogger.log + +# A3 uses PatternLayout. +log4j.appender.A3.layout=org.apache.log4j.PatternLayout +log4j.appender.A3.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +#log4j.category.org.apache.cocoon.poi=WARN
\ No newline at end of file |