--- /dev/null
+# -*- text -*-
+# Copyright (C) 2025 The FreeRADIUS Server project and contributors
+# This work is licensed under CC-BY version 4.0 https://creativecommons.org/licenses/by/4.0
+# Version $Id$
+proto der
+proto-dictionary der
+load-dictionary dictionary.test
+fuzzer-out der
+max-buffer-size 2048
+
+proto-dictionary-root Issuer
+decode-pair 30 3F 31 24 30 22 06 03 55 04 0A 13 1B 44 69 67 69 74 61 6C 20 53 69 67 6E 61 74 75 72 65 20 54 72 75 73 74 20 43 6F 2E 31 17 30 15 06 03 55 04 03 13 0E 44 53 54 20 52 6F 6F 74 20 43 41 20 58 33
+match Issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
+
+proto-dictionary-root Certificate-Extensions
+#decode-pair A3 82 01 7D 30 82 01 79 30 12 06 03 55 1D 13 01 01 FF 04 08 30 06 01 01 FF 02 01 00 30 0E 06 03 55 1D 0F 01 01 FF 04 04 03 02 01 86 30 7F 06 08 2B 06 01 05 05 07 01 01 04 73 30 71 30 32 06 08 2B 06 01 05 05 07 30 01 86 26 68 74 74 70 3A 2F 2F 69 73 72 67 2E 74 72 75 73 74 69 64 2E 6F 63 73 70 2E 69 64 65 6E 74 72 75 73 74 2E 63 6F 6D 30 3B 06 08 2B 06 01 05 05 07 30 02 86 2F 68 74 74 70 3A 2F 2F 61 70 70 73 2E 69 64 65 6E 74 72 75 73 74 2E 63 6F 6D 2F 72 6F 6F 74 73 2F 64 73 74 72 6F 6F 74 63 61 78 33 2E 70 37 63 30 1F 06 03 55 1D 23 04 18 30 16 80 14 C4 A7 B1 A4 7B 2C 71 FA DB E1 4B 90 75 FF C4 15 60 85 89 10 30 54 06 03 55 1D 20 04 4D 30 4B 30 08 06 06 67 81 0C 01 02 01 30 3F 06 0B 2B 06 01 04 01 82 DF 13 01 01 01 30 30 30 2E 06 08 2B 06 01 05 05 07 02 01 16 22 68 74 74 70 3A 2F 2F 63 70 73 2E 72 6F 6F 74 2D 78 31 2E 6C 65 74 73 65 6E 63 72 79 70 74 2E 6F 72 67 30 3C 06 03 55 1D 1F 04 35 30 33 30 31 A0 2F A0 2D 86 2B 68 74 74 70 3A 2F 2F 63 72 6C 2E 69 64 65 6E 74 72 75 73 74 2E 63 6F 6D 2F 44 53 54 52 4F 4F 54 43 41 58 33 43 52 4C 2E 63 72 6C 30 1D 06 03 55 1D 0E 04 16 04 14 A8 4A 6A 63 04 7D DD BA E6 D1 39 B7 A6 45 65 EF F3 A8 EC A1
+#match Certificate-Extensions = { Critical = { joint-iso-itu-t = { ds = { certificateExtension = { basicConstraints = { cA = yes, pathLenConstraint = 0 } } } }, joint-iso-itu-t = { ds = { certificateExtension = { keyUsage = { digitalSignature = yes, nonRepudation = no, keyEncipherment = no, dataEncipherment = no, keyAgreement = no, keyCertSign = yes, cRLSign = yes, encipherOnly = no } } } } }, iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { pe = { authorityInfoAccess = { accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.1", accessLocation = { uniformResourceIdentifier = "http://isrg.trustid.ocsp.identrust.com" } }, accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.2", accessLocation = { uniformResourceIdentifier = "http://apps.identrust.com/roots/dstrootcax3.p7c" } } } } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { authorityKeyIdentifier = { keyIdentifier = 0xc4a7b1a47b2c71fadbe14b9075ffc41560858910 } } } }, joint-iso-itu-t = { ds = { certificateExtension = { certificatePolicies = { policyInformation = { policyIdentifier = "2.23.140.1.2.1" }, policyInformation = { policyIdentifier = "1.3.6.1.4.1.44947.1.1.1", policyQualifiers = { policyQualifierInfo = { iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { raw.2 = { raw.1 = 0x1622687474703a2f2f6370732e726f6f742d78312e6c657473656e63727970742e6f7267 } } } } } } } } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { cRLDIstributionPoints = { distributionPoint = { distributionPointName = { fullName = { uniformResourceIdentifier = "http://crl.identrust.com/DSTROOTCAX3CRL.crl" } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { subjectKeyIdentifier = 0xa84a6a63047dddbae6d139b7a64565eff3a8eca1 } } } }
+
+proto-dictionary-root Certificate-Extensions
+decode-pair a3 0f 30 0d 30 0b 06 02 2b 04 04 05 30 71 30 32 01
+match Certificate-Extensions = { iso = { identified-organization = { raw.4 = 0x3071303201 } } }
+
+proto-dictionary-root Octetstring
+decode-pair 04 73 3071303206082b060105050730018626687474703a2f2f697372672e747275737469642e6f6373702e6964656e74727573742e636f6d303b06082b06010505073002862f687474703a2f2f617070732e6964656e74727573742e636f6d2f726f6f74732f647374726f6f74636178332e703763
+match Octetstring = 0x3071303206082b060105050730018626687474703a2f2f697372672e747275737469642e6f6373702e6964656e74727573742e636f6d303b06082b06010505073002862f687474703a2f2f617070732e6964656e74727573742e636f6d2f726f6f74732f647374726f6f74636178332e703763
+
+proto-dictionary-root Certificate-Extensions
+decode-pair a3 81 84 30 81 81 30 7f 06 08 2b 06 01 05 05 07 01 01 04 73 30 71 30 32 06 08 2b 06 01 05 05 07 30 01 86 26 68 74 74 70 3a 2f 2f 69 73 72 67 2e 74 72 75 73 74 69 64 2e 6f 63 73 70 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 30 3b 06 08 2b 06 01 05 05 07 30 02 86 2f 68 74 74 70 3a 2f 2f 61 70 70 73 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 72 6f 6f 74 73 2f 64 73 74 72 6f 6f 74 63 61 78 33 2e 70 37 63
+match Certificate-Extensions = { iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { pe = { authorityInfoAccess = { accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.1", accessLocation = { uniformResourceIdentifier = "http://isrg.trustid.ocsp.identrust.com" } }, accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.2", accessLocation = { uniformResourceIdentifier = "http://apps.identrust.com/roots/dstrootcax3.p7c" } } } } } } } } } } } }
+
+decode-pair a3 82 01 7d 30 82 01 79 30 7f 06 08 2b 06 01 05 05 07 01 01 04 73 30 71 30 32 06 08 2b 06 01 05 05 07 30 01 86 26 68 74 74 70 3a 2f 2f 69 73 72 67 2e 74 72 75 73 74 69 64 2e 6f 63 73 70 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 30 3b 06 08 2b 06 01 05 05 07 30 02 86 2f 68 74 74 70 3a 2f 2f 61 70 70 73 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 72 6f 6f 74 73 2f 64 73 74 72 6f 6f 74 63 61 78 33 2e 70 37 63 30 1f 06 03 55 1d 23 04 18 30 16 80 14 c4 a7 b1 a4 7b 2c 71 fa db e1 4b 90 75 ff c4 15 60 85 89 10 30 54 06 03 55 1d 20 04 4d 30 4b 30 08 06 06 67 81 0c 01 02 01 30 3f 06 0b 2b 06 01 04 01 82 df 13 01 01 01 30 30 30 2e 06 08 2b 06 01 05 05 07 02 01 16 22 68 74 74 70 3a 2f 2f 63 70 73 2e 72 6f 6f 74 2d 78 31 2e 6c 65 74 73 65 6e 63 72 79 70 74 2e 6f 72 67 30 3c 06 03 55 1d 1f 04 35 30 33 30 31 a0 2f a0 2d 86 2b 68 74 74 70 3a 2f 2f 63 72 6c 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 44 53 54 52 4f 4f 54 43 41 58 33 43 52 4c 2e 63 72 6c 30 1d 06 03 55 1d 0e 04 16 04 14 a8 4a 6a 63 04 7d dd ba e6 d1 39 b7 a6 45 65 ef f3 a8 ec a1 30 12 06 03 55 1d 13 01 01 ff 04 08 30 06 01 01 ff 02 01 00 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 01 86
+match Certificate-Extensions = { Critical = { joint-iso-itu-t = { ds = { certificateExtension = { basicConstraints = { cA = yes, pathLenConstraint = 0 } } } }, joint-iso-itu-t = { ds = { certificateExtension = { keyUsage = { digitalSignature = yes, nonRepudation = no, keyEncipherment = no, dataEncipherment = no, keyAgreement = no, keyCertSign = yes, cRLSign = yes, encipherOnly = no } } } } }, iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { pe = { authorityInfoAccess = { accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.1", accessLocation = { uniformResourceIdentifier = "http://isrg.trustid.ocsp.identrust.com" } }, accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.2", accessLocation = { uniformResourceIdentifier = "http://apps.identrust.com/roots/dstrootcax3.p7c" } } } } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { authorityKeyIdentifier = { keyIdentifier = 0xc4a7b1a47b2c71fadbe14b9075ffc41560858910 } } } }, joint-iso-itu-t = { ds = { certificateExtension = { certificatePolicies = { policyInformation = { policyIdentifier = "2.23.140.1.2.1" }, policyInformation = { policyIdentifier = "1.3.6.1.4.1.44947.1.1.1", policyQualifiers = { policyQualifierInfo = { iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { raw.2 = { raw.1 = 0x1622687474703a2f2f6370732e726f6f742d78312e6c657473656e63727970742e6f7267 } } } } } } } } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { cRLDIstributionPoints = { distributionPoint = { distributionPointName = { fullName = { uniformResourceIdentifier = "http://crl.identrust.com/DSTROOTCAX3CRL.crl" } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { subjectKeyIdentifier = 0xa84a6a63047dddbae6d139b7a64565eff3a8eca1 } } } }
+
+proto-dictionary der
+encode-pair Certificate-Extensions = { iso = { identified-organization = { raw.4 = 0x3071303201 } } }
+match a3 0f 30 0d 30 0b 06 02 2b 04 04 05 30 71 30 32 01
+
+encode-pair Certificate-Extensions = { iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { pe = { raw.1 = 0x3071303206082b060105050730018626687474703a2f2f697372672e747275737469642e6f6373702e6964656e74727573742e636f6d303b06082b06010505073002862f687474703a2f2f617070732e6964656e74727573742e636f6d2f726f6f74732f647374726f6f74636178332e703763 } } } } } } } } }
+match a3 81 84 30 81 81 30 7f 06 08 2b 06 01 05 05 07 01 01 04 73 30 71 30 32 06 08 2b 06 01 05 05 07 30 01 86 26 68 74 74 70 3a 2f 2f 69 73 72 67 2e 74 72 75 73 74 69 64 2e 6f 63 73 70 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 30 3b 06 08 2b 06 01 05 05 07 30 02 86 2f 68 74 74 70 3a 2f 2f 61 70 70 73 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 72 6f 6f 74 73 2f 64 73 74 72 6f 6f 74 63 61 78 33 2e 70 37 63
+
+encode-pair Certificate-Extensions = { Critical = { joint-iso-itu-t = { ds = { certificateExtension = { raw.19 = 0x30060101ff020100 } } }, joint-iso-itu-t = { ds = { certificateExtension = { raw.15 = 0x03020186 } } } }, iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { pe = { raw.1 = 0x3071303206082b060105050730018626687474703a2f2f697372672e747275737469642e6f6373702e6964656e74727573742e636f6d303b06082b06010505073002862f687474703a2f2f617070732e6964656e74727573742e636f6d2f726f6f74732f647374726f6f74636178332e703763 } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { raw.35 = 0x30168014c4a7b1a47b2c71fadbe14b9075ffc41560858910 } } }, joint-iso-itu-t = { ds = { certificateExtension = { raw.32 = 0x304b3008060667810c010201303f060b2b0601040182df130101013030302e06082b060105050702011622687474703a2f2f6370732e726f6f742d78312e6c657473656e63727970742e6f7267 } } }, joint-iso-itu-t = { ds = { certificateExtension = { raw.31 = 0x30333031a02fa02d862b687474703a2f2f63726c2e6964656e74727573742e636f6d2f445354524f4f544341583343524c2e63726c } } }, joint-iso-itu-t = { ds = { certificateExtension = { raw.14 = 0x0414a84a6a63047dddbae6d139b7a64565eff3a8eca1 } } } }
+match a3 82 01 7d 30 82 01 79 30 12 06 03 55 1d 13 01 01 ff 04 08 30 06 01 01 ff 02 01 00 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 01 86 30 7f 06 08 2b 06 01 05 05 07 01 01 04 73 30 71 30 32 06 08 2b 06 01 05 05 07 30 01 86 26 68 74 74 70 3a 2f 2f 69 73 72 67 2e 74 72 75 73 74 69 64 2e 6f 63 73 70 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 30 3b 06 08 2b 06 01 05 05 07 30 02 86 2f 68 74 74 70 3a 2f 2f 61 70 70 73 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 72 6f 6f 74 73 2f 64 73 74 72 6f 6f 74 63 61 78 33 2e 70 37 63 30 1f 06 03 55 1d 23 04 18 30 16 80 14 c4 a7 b1 a4 7b 2c 71 fa db e1 4b 90 75 ff c4 15 60 85 89 10 30 54 06 03 55 1d 20 04 4d 30 4b 30 08 06 06 67 81 0c 01 02 01 30 3f 06 0b 2b 06 01 04 01 82 df 13 01 01 01 30 30 30 2e 06 08 2b 06 01 05 05 07 02 01 16 22 68 74 74 70 3a 2f 2f 63 70 73 2e 72 6f 6f 74 2d 78 31 2e 6c 65 74 73 65 6e 63 72 79 70 74 2e 6f 72 67 30 3c 06 03 55 1d 1f 04 35 30 33 30 31 a0 2f a0 2d 86 2b 68 74 74 70 3a 2f 2f 63 72 6c 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 44 53 54 52 4f 4f 54 43 41 58 33 43 52 4c 2e 63 72 6c 30 1d 06 03 55 1d 0e 04 16 04 14 a8 4a 6a 63 04 7d dd ba e6 d1 39 b7 a6 45 65 ef f3 a8 ec a1
+
+proto-dictionary-root Issuer
+decode-pair 30 3F 31 24 30 22 06 03 55 04 0A 13 1B 44 69 67 69 74 61 6C 20 53 69 67 6E 61 74 75 72 65 20 54 72 75 73 74 20 43 6F 2E 31 17 30 15 06 03 55 04 03 13 0E 44 53 54 20 52 6F 6F 74 20 43 41 20 58 33
+match Issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
+
+decode-pair 30 4A 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 16 30 14 06 03 55 04 0A 13 0D 4C 65 74 27 73 20 45 6E 63 72 79 70 74 31 23 30 21 06 03 55 04 03 13 1A 4C 65 74 27 73 20 45 6E 63 72 79 70 74 20 41 75 74 68 6F 72 69 74 79 20 58 33
+match Issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { countryName = "US" } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Let's Encrypt" } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "Let's Encrypt Authority X3" } } } } } }
+
+proto-dictionary-root Issuer-Set
+decode-pair 31 3F 31 24 30 22 06 03 55 04 0A 13 1B 44 69 67 69 74 61 6C 20 53 69 67 6E 61 74 75 72 65 20 54 72 75 73 74 20 43 6F 2E 31 17 30 15 06 03 55 04 03 13 0E 44 53 54 20 52 6F 6F 74 20 43 41 20 58 33
+match Issuer-Set = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
+
+proto-dictionary-root Test-Seq-Of
+
+decode-pair 30 06 02 01 01 02 01 02
+match Test-Seq-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
+
+proto-dictionary-root Test-Seq-Of
+
+decode-pair 30 06 02 01 01 01 01 FF
+match Attribute Test-Seq-Of is a sequence-of, but received tag 1
+
+proto-dictionary-root Test-Set-Of
+
+decode-pair 31 06 02 01 01 02 01 02
+match Test-Set-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
+
+decode-pair 31 07 02 02 00 80 02 01 02
+match Set tags are not in ascending order. Previous item has more data
+
+proto-dictionary-root Test-Set-Of
+
+decode-pair 31 06 02 01 01 01 01 FF
+match Attribute Test-Set-Of is a set-of type 2, but found type 1
+
+proto-dictionary-root Test-String-Max
+
+decode-pair 16 02 68 69
+match Test-String-Max = "hi"
+
+decode-pair 1681f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Data length (247) exceeds max size (5)
+
+proto-dictionary-root Foo
+
+# Test the fuzzer with a dictionary of DER-encoded PKCS#10 requests
+
+decode-pair 30 03 02 01 80
+match Foo = { Test-Integer = -128 }
+
+decode-pair 30 03 02 01 7F
+match Foo = { Test-Integer = 127 }
+
+decode-pair 30 04 02 02 00 80
+match Foo = { Test-Integer = 128 }
+
+decode-pair 30 04 02 02 FF 80
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 04 02 02 00 70
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 04 02 02 80 00
+match Foo = { Test-Integer = -32768 }
+
+decode-pair 30 04 02 02 7F FF
+match Foo = { Test-Integer = 32767 }
+
+decode-pair 30 05 02 03 00 80 00
+match Foo = { Test-Integer = 32768 }
+
+decode-pair 30 05 02 03 FF 80 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 05 02 03 00 70 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 05 02 03 80 00 00
+match Foo = { Test-Integer = -8388608 }
+
+decode-pair 30 05 02 03 7F FF FF
+match Foo = { Test-Integer = 8388607 }
+
+decode-pair 30 06 02 04 00 80 00 00
+match Foo = { Test-Integer = 8388608 }
+
+decode-pair 30 06 02 04 FF 80 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 06 02 04 00 70 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 06 02 04 80 00 00 00
+match Foo = { Test-Integer = -2147483648 }
+
+decode-pair 30 06 02 04 7F FF FF FF
+match Foo = { Test-Integer = 2147483647 }
+
+decode-pair 30 07 02 05 00 80 00 00 00
+match Foo = { Test-Integer = 2147483648 }
+
+decode-pair 30 07 02 05 FF 80 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 07 02 05 00 70 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 07 02 05 80 00 00 00 00
+match Foo = { Test-Integer = -549755813888 }
+
+decode-pair 30 07 02 05 7F FF FF FF FF
+match Foo = { Test-Integer = 549755813887 }
+
+decode-pair 30 08 02 06 00 80 00 00 00 00
+match Foo = { Test-Integer = 549755813888 }
+
+decode-pair 30 08 02 06 FF 80 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 08 02 06 00 70 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 08 02 06 80 00 00 00 00 00
+match Foo = { Test-Integer = -140737488355328 }
+
+decode-pair 30 08 02 06 7F FF FF FF FF FF
+match Foo = { Test-Integer = 140737488355327 }
+
+decode-pair 30 09 02 07 00 80 00 00 00 00 00
+match Foo = { Test-Integer = 140737488355328 }
+
+decode-pair 30 09 02 07 FF 80 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 09 02 07 00 70 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 09 02 07 80 00 00 00 00 00 00
+match Foo = { Test-Integer = -36028797018963968 }
+
+decode-pair 30 09 02 07 7F FF FF FF FF FF FF
+match Foo = { Test-Integer = 36028797018963967 }
+
+decode-pair 30 0A 02 08 00 80 00 00 00 00 00 00
+match Foo = { Test-Integer = 36028797018963968 }
+
+decode-pair 30 0A 02 08 FF 80 00 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 0A 02 08 00 70 00 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 0A 02 08 80 00 00 00 00 00 00 00
+match Foo = { Test-Integer = -9223372036854775808 }
+
+decode-pair 30 0A 02 08 7F FF FF FF FF FF FF FF
+match Foo = { Test-Integer = 9223372036854775807 }
+
+decode-pair 30 0B 02 09 00 80 00 00 00 00 00 00 00
+match Integer too large (9)
+
+decode-pair 30 13 02 11 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+match Integer too large (17)
+
+proto-dictionary-root Bar
+
+decode-pair 30 03 01 01 00
+match Bar = { Test-Boolean = no }
+
+decode-pair 30 03 01 01 FF
+match Bar = { Test-Boolean = yes }
+
+decode-pair 30 03 01 01 01
+match Boolean is not correctly DER encoded (0x00 or 0xff).
+
+proto-dictionary-root Foo-Bar
+
+decode-pair 30 06 02 01 09 01 01 00
+match Foo-Bar = { Test-Integer = 9, Test-Boolean = no }
+
+decode-pair 30 06 02 01 09 01 01 FF
+match Foo-Bar = { Test-Integer = 9, Test-Boolean = yes }
+
+decode-pair 30 06 02 01 01 01 01 FF
+match Foo-Bar = { Test-Integer = ::DEFAULT, Test-Boolean = yes }
+
+decode-pair 30 03 01 01 FF
+match Foo-Bar = { Test-Integer = ::DEFAULT, Test-Boolean = yes }
+
+decode-pair 30 06 02 01 09 01 01 01
+match Boolean is not correctly DER encoded (0x00 or 0xff).
+
+decode-pair 30 06 02 02 09 01 01 FF
+match Length field too large (127): Failed decoding header
+
+proto-dictionary-root SEQ-BITSTRING-OCTETS
+
+decode-pair 30 04 03 02 00 01
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x0001 }
+
+decode-pair 30 03 03 01 00
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x00 }
+
+decode-pair 30 04 03 02 01 02
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x0102 }
+
+decode-pair 30 04 03 02 01 03
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x0102 }
+
+decode-pair 30 05 03 03 01 03 03
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x010302 }
+
+decode-pair 30 09 03 07 04 0A 3B 5F 29 1C D0
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x040a3b5f291cd0 }
+
+decode-pair 30 09 03 07 04 0A 3B 5F 29 1C DF
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x040a3b5f291cd0 }
+
+decode-pair 30 04 03 01
+match Insufficient data for length field (4): Failed decoding header
+
+decode-pair 30 04 03 01 08
+match Insufficient data for length field (4): Failed decoding header
+
+decode-pair 30 04 03 01 01
+match Insufficient data for length field (4): Failed decoding header
+
+proto-dictionary-root Bitstring-Struct
+
+decode-pair 03 02 00 01
+match Bitstring-Struct = { foo = 1 }
+
+decode-pair 03 02 00 00
+match Bitstring-Struct = { foo = 0 }
+
+decode-pair 03 03 00 FB FB
+match Bitstring-Struct = { foo = 251, bar = 15, foo-bar = 11 }
+
+decode-pair 03 03 00 FF FF
+match Bitstring-Struct = { foo = 255, bar = 15, foo-bar = 15 }
+
+decode-pair 03 04 00 FF FF FF
+# match Bitstring structure decoder didn't consume all data
+
+proto-dictionary-root Bitstring-Struct-7
+
+decode-pair 03 02 01 FB
+match Bitstring-Struct-7 = { foo = 3, bar = yes, foo-bar = 13 }
+
+proto-dictionary-root Octetstring
+
+decode-pair 04 01 00
+match Octetstring = 0x00
+
+decode-pair 04 01 FF
+match Octetstring = 0xff
+
+decode-pair 04 08 ff ff ff ff ff ff ff ff
+match Octetstring = 0xffffffffffffffff
+
+proto-dictionary-root Seq-Octetstring
+
+decode-pair 30 03 04 01 00
+match Seq-Octetstring = { Octetstring = 0x00 }
+
+decode-pair 30 03 04 01 FF
+match Seq-Octetstring = { Octetstring = 0xff }
+
+decode-pair 30 0A 04 08 ff ff ff ff ff ff ff ff
+match Seq-Octetstring = { Octetstring = 0xffffffffffffffff }
+
+proto-dictionary-root Test-Null
+
+decode-pair 05 00
+match Test-NULL = no
+
+proto-dictionary-root Test-Enumerated
+
+decode-pair 0a 02 04 d2
+match Test-Enumerated = 1234
+
+proto-dictionary-root Seq-Null
+
+decode-pair 30 02 05 00
+match Seq-Null = { Test-Null = no }
+
+decode-pair 30 02 05 01
+match Insufficient data for length field (1): Failed decoding header
+
+proto-dictionary-root Seq-Integer-Null
+
+decode-pair 30 05 02 01 01 05 00
+match Seq-Integer-Null = { Test-Integer = 1, Test-Null = no }
+
+proto-dictionary-root Test-Oid
+
+decode-pair 06 03 88 37 03
+match Test-Oid = "2.999.3"
+
+decode-pair 06 09 2a 86 48 86 f7 0d 01 01 0B
+match Test-Oid = "1.2.840.113549.1.1.11"
+
+decode-pair 06 0A 2a 86 48 ff 86 f7 0d 01 01 0b
+match Test-Oid = "1.2.840.266451853.1.1.11"
+
+decode-pair 06 0B 2a 86 48 ff ff 86 f7 0d 01 01 0b
+match Test-Oid = "1.2.840.34357754765.1.1.11"
+
+decode-pair 06 0C 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+match Test-Oid = "1.2.840.4398044527501.1.1.11"
+
+decode-pair 06 0C 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.34359738367.13.1.1.11"
+
+decode-pair 06 0D 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.4398046511103.13.1.1.11"
+
+decode-pair 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.562949953421311.13.1.1.11"
+
+decode-pair 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.72057594037927935.13.1.1.11"
+
+decode-pair 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.9223372036854775807.13.1.1.11"
+
+decode-pair 06 11 2a 86 48 ff ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 06 12 2a 86 48 ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 06 19 2a 86 48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+proto-dictionary-root Seq-Oid
+
+decode-pair 30 05 06 03 88 37 03
+match Seq-Oid = { Test-Oid = "2.999.3" }
+
+decode-pair 30 0b 06 09 2a 86 48 86 f7 0d 01 01 0B
+match Seq-Oid = { Test-Oid = "1.2.840.113549.1.1.11" }
+
+decode-pair 30 0C 06 0A 2a 86 48 ff 86 f7 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.266451853.1.1.11" }
+
+decode-pair 30 0d 06 0B 2a 86 48 ff ff 86 f7 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.34357754765.1.1.11" }
+
+decode-pair 30 0e 06 0C 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.4398044527501.1.1.11" }
+
+decode-pair 30 0e 06 0C 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.34359738367.13.1.1.11" }
+
+decode-pair 30 0f 06 0D 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.4398046511103.13.1.1.11" }
+
+decode-pair 30 10 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.562949953421311.13.1.1.11" }
+
+decode-pair 30 11 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.72057594037927935.13.1.1.11" }
+
+decode-pair 30 12 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.9223372036854775807.13.1.1.11" }
+
+decode-pair 30 13 06 11 2a 86 48 ff ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 30 14 06 12 2a 86 48 ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 30 1b 06 19 2a 86 48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+proto-dictionary-root Test-String
+
+# Test IA5String
+decode-pair 16 02 68 69
+match Test-String = "hi"
+
+decode-pair 1681f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 16820783496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+
+# Test UTF8String
+decode-pair 0c81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 0c820783496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+
+decode-pair 0c 04 f0 9f 98 8e
+match Test-String = "😎"
+
+decode-pair 0c 04 f0 9f 98
+match Insufficient data for length field (4): Failed decoding header
+
+# Test PrintableString
+decode-pair 13 02 68 69
+match Test-String = "hi"
+
+decode-pair 134a4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?"
+
+decode-pair 1381f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 138208af496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 13820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+decode-pair 13 01 21
+match Invalid character in a string (33)
+
+# Test T61String
+decode-pair 140c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1481f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 14820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+# Test VisibleString
+decode-pair 1a0c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1a81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 1a820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+# Test GeneralString
+decode-pair 1b0c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1b81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 1b820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+# Test UniversalString
+decode-pair 1c0c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1c81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 1c820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+proto-dictionary-root Seq-String
+
+# Test IA5String
+decode-pair 30 04 16 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 81 fa 16 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 87 16 82 07 83 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end." }
+
+# Test UTF8String
+decode-pair 30 04 0c 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 81 fa 0c 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 87 0c 82 07 83 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end." }
+
+decode-pair 30 06 0c 04 f0 9f 98 8e
+match Seq-String = { Test-String = "😎" }
+
+decode-pair 30 06 0c 04 f0 9f 98
+match Insufficient data for length field (6): Failed decoding header
+
+# Test PrintableString
+decode-pair 30 04 13 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 13 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 13 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 13 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 13 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+decode-pair 30 03 13 01 21
+match Invalid character in a string (33)
+
+# Test T61String
+decode-pair 30 04 14 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 14 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 14 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 14 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 14 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+# Test VisibleString
+decode-pair 30 04 1A 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 1A 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 1A 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 1A 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 1A 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+# Test GeneralString
+decode-pair 30 04 1B 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 1B 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 1B 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 1B 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 1B 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+# Test UniversalString
+decode-pair 30 04 1c 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 1c 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 1c 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 1c 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 1c 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+proto-dictionary-root Test-Date
+
+decode-pair 17 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
+match Test-Date = "2019-12-16T03:02:10Z"
+
+# Test GeneralizedTime
+decode-pair 180f32303139313231363033303231305a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 18 13 32 30 31 35313233313233353935392e3132335a
+match Test-Date = "2015-12-31T23:59:59Z"
+
+decode-pair 181132303139313231363033303231302e305a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181132303139313231363033303231302e315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181232303139313231363033303231302e30315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181432303139313231363033303231302e303030315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181632303139313231363033303231302e3030303030315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 18 13 32 303139313231363033303231302e30303031
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 18 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
+match Insufficient data for generalized time or incorrect length
+
+decode-pair 18 14 32 30 31 39 31 32 31 36 30 33 00 32 31 30 2e 30 30 30 31 5a
+match Generalized time contains null byte
+
+decode-pair 18 14 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 30 30 00 31 5a
+match Generalized time contains null byte in subseconds
+
+decode-pair 18 10 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 5a
+match Insufficient data for subseconds
+
+proto-dictionary-root Seq-Date
+
+decode-pair 30 0F 17 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
+match Seq-Date = { Test-Date = "2019-12-16T03:02:10Z" }
+
+# Test GeneralizedTime
+decode-pair 30 11 180f32303139313231363033303231305a
+match Seq-Date = { Test-Date = "2019-12-16T03:02:10Z" }
+
+# Test Set
+proto-dictionary-root Set-Bool-Integer
+
+decode-pair 3106010100020109
+match Set-Bool-Integer = { Test-Bool = no, Test-Integer = 9 }
+
+decode-pair 3106020109010100
+match Expected parent type 'int64', got attribute Test-Bool of type bool
+
+# Test sub_type
+proto der
+proto-dictionary der
+proto-dictionary-root Test-String-UTF8
+
+decode-pair 0c 04 f0 9f 98 8e
+match Test-String-UTF8 = "😎"
+
+# Test Context-Specific
+proto-dictionary-root Test-Context-Specific
+
+decode-pair 80 01 00
+match Test-Context-Specific = no
+
+# Test-Encode
+#proto der
+#proto-dictionary pkcs10
+#fuzzer-out der
+
+proto-dictionary-root Test-Boolean
+
+decode-pair 01 01 FF
+match Test-Boolean = yes
+
+# proto der
+proto-dictionary der
+# proto-dictionary-root Test-Boolean
+
+encode-pair Test-Boolean = yes
+match 01 01 ff
+
+encode-pair Test-Boolean = no
+match 01 01 00
+
+encode-pair Test-Integer = 1
+match 02 01 01
+
+encode-pair Test-Integer = 549755813887
+match 02 05 7f ff ff ff ff
+
+encode-pair Test-Integer = 9223372036854775807
+match 02 08 7f ff ff ff ff ff ff ff
+
+# Test Bitstring
+
+encode-pair Test-Bitstring = 0x040a3b5f291cd0
+match 03 07 04 0a 3b 5f 29 1c d0
+
+encode-pair Bitstring-Struct = { foo = 1 }
+match 03 02 00 01
+
+encode-pair Bitstring-Struct = { foo = 0 }
+match 03 02 00 00
+
+encode-pair Bitstring-Struct = { foo = 251, bar = 15, foo-bar = 11 }
+match 03 03 00 fb fb
+
+encode-pair Bitstring-Struct = { foo = 255, bar = 15, foo-bar = 15 }
+match 03 03 00 ff ff
+
+encode-pair Octetstring = 0x00
+match 04 01 00
+
+encode-pair Octetstring = 0xff
+match 04 01 ff
+
+encode-pair Octetstring = 0xffffffffffffffff
+match 04 08 ff ff ff ff ff ff ff ff
+
+encode-pair Test-NULL = 0
+match 05 00
+
+encode-pair Test-NULL = 1
+match 05 00
+
+encode-pair Test-NULL = 1234
+match 05 00
+
+# Test Enumerated Encoding
+encode-pair Test-Enumerated = 1234
+match 0a 02 04 d2
+
+encode-pair Test-Enumerated = A
+match Failed parsing string as type 'int64'
+
+# Test UTC Time
+encode-pair Test-UTC = "2019-12-16T03:02:10Z"
+match 17 0d 31 39 31 32 31 36 30 33 30 32 31 30 5a
+
+# Test GeneralizedTime
+encode-pair Test-Generalized-Time = "2019-12-16T03:02:10Z"
+match 18 0f 32 30 31 39 31 32 31 36 30 33 30 32 31 30 5a
+
+encode-pair Test-Generalized-Time = "2019-12-16T03:02:10.0000Z"
+match 18 0f 32 30 31 39 31 32 31 36 30 33 30 32 31 30 5a
+
+encode-pair Test-Generalized-Time = "2019-12-16T03:02:10.0100Z"
+match 18 12 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 30 31 5a
+
+encode-pair Test-Generalized-Time = "2015-12-31T23:59:59.1230Z"
+match 18 13 32 30 31 35 31 32 33 31 32 33 35 39 35 39 2e 31 32 33 5a
+
+encode-pair Test-String = "foo"
+match 0c 03 66 6f 6f
+
+# Test UTF8 Encoding
+
+encode-pair Test-String-UTF8 = "In a hole in the ground there lived a hobbit."
+match 0c 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test PrintableString Encoding
+
+encode-pair Test-String-Printable = "In a hole in the ground there lived a hobbit."
+match 13 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+encode-pair Test-String-Printable = "Bad character !"
+match 13 0f 42 61 64 20 63 68 61 72 61 63 74 65 72 20 21
+
+# Test T61String Encoding
+
+encode-pair Test-String-T61 = "In a hole in the ground there lived a hobbit."
+match 14 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+encode-pair Test-String-T61 = "Bad character {}"
+match 14 10 42 61 64 20 63 68 61 72 61 63 74 65 72 20 7b 7d
+
+# Test IA5String Encoding
+
+encode-pair Test-String-IA5 = "In a hole in the ground there lived a hobbit."
+match 16 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test VisibleString Encoding
+encode-pair Test-String-Visible = "In a hole in the ground there lived a hobbit."
+match 1a 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test GeneralString Encoding
+encode-pair Test-String-General = "In a hole in the ground there lived a hobbit."
+match 1b 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test UniversalString Encoding
+encode-pair Test-String-Universal = "In a hole in the ground there lived a hobbit."
+match 1c 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+max-buffer-size 2048
+
+# Test UTF8 Encoding
+
+encode-pair Test-String-UTF8 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+match 0c 82 07 83 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 e2 80 93 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 e2 80 93 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 e2 80 93 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 e2 80 99 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 e2 80 93 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test PrintableString Encoding
+
+encode-pair Test-String-Printable = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 13 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test T61String Encoding
+encode-pair Test-String-T61 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 14 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test IA5String Encoding
+encode-pair Test-String-IA5 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+match 16 82 07 83 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 e2 80 93 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 e2 80 93 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 e2 80 93 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 e2 80 99 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 e2 80 93 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test VisibleString Encoding
+encode-pair Test-String-Visible = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 1a 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test GeneralString Encoding
+encode-pair Test-String-General = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 1b 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test UniversalString Encoding
+encode-pair Test-String-Universal = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 1c 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test Sequence
+
+encode-pair Foo = { Test-Integer = 127 }
+match 30 03 02 01 7f
+
+encode-pair Foo-Bar = { Test-Integer = 9, Test-Boolean = no }
+match 30 06 02 01 09 01 01 00
+
+encode-pair Foo-Bar = { Test-Integer = 9, Test-Boolean = yes }
+match 30 06 02 01 09 01 01 ff
+
+encode-pair Test-Sequence-TLV = { Test-Integer = 9, Test-Boolean = no }
+match 30 06 02 01 09 01 01 00
+
+encode-pair Test-Sequence-TLV = { Test-Integer = 9, Test-Boolean = yes }
+match 30 06 02 01 09 01 01 ff
+
+encode-pair Test-Sequence-Group = { Test-Integer = 9 }
+match 30 03 02 01 09
+
+encode-pair Test-Sequence-Group = { Test-Integer = 9, Test-Boolean = yes }
+match 30 06 02 01 09 01 01 ff
+
+encode-pair Test-Set-Struct = { Test-Integer = 9, Test-Boolean = no }
+match 31 06 01 01 00 02 01 09
+
+encode-pair Test-Set-Struct = { Test-Integer = 9, Test-Boolean = yes }
+match 31 06 01 01 ff 02 01 09
+
+encode-pair Test-Set-TLV = { Test-Integer = 9, Test-Boolean = no }
+match 31 06 01 01 00 02 01 09
+
+encode-pair Test-Set-TLV = { Test-Integer = 9, Test-Boolean = yes }
+match 31 06 01 01 ff 02 01 09
+
+encode-pair Test-Set-GROUP = { Test-Integer = 9 }
+match 31 03 02 01 09
+
+encode-pair Test-Set-GROUP = { Test-Integer = 9, Test-Boolean = yes }
+match 31 06 01 01 ff 02 01 09
+
+encode-pair Test-Oid = "2.999.3"
+match 06 03 88 37 03
+
+encode-pair Test-Oid = "1.2.840.113549.1.1.11"
+match 06 09 2a 86 48 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.266451853.1.1.11"
+match 06 0a 2a 86 48 ff 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.34357754765.1.1.11"
+match 06 0b 2a 86 48 ff ff 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.4398044527501.1.1.11"
+match 06 0c 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.34359738367.13.1.1.11"
+match 06 0c 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.4398046511103.13.1.1.11"
+match 06 0d 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.562949953421311.13.1.1.11"
+match 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.72057594037927935.13.1.1.11"
+match 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.9223372036854775807.13.1.1.11"
+match 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.113549.1.1.11" }
+match 30 0b 06 09 2a 86 48 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.266451853.1.1.11" }
+match 30 0c 06 0a 2a 86 48 ff 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.34357754765.1.1.11" }
+match 30 0d 06 0b 2a 86 48 ff ff 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.4398044527501.1.1.11" }
+match 30 0e 06 0c 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.34359738367.13.1.1.11" }
+match 30 0e 06 0c 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.4398046511103.13.1.1.11" }
+match 30 0f 06 0d 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.562949953421311.13.1.1.11" }
+match 30 10 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.72057594037927935.13.1.1.11" }
+match 30 11 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.9223372036854775807.13.1.1.11" }
+match 30 12 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Seq-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
+match 30 06 02 01 01 02 01 02
+
+encode-pair Test-Set-Of = { Test-First-Integer = 1, Test-First-Integer = 2580 }
+match 31 07 02 01 01 02 02 0a 14
+
+encode-pair Test-Set-Of = { Test-First-Integer = 2, Test-First-Integer = 1 }
+match 31 06 02 01 01 02 01 02
+
+encode-pair Test-Set-Of-Group = { Test-First-Integer = 2, Test-First-Integer = 1 }
+match 31 06 02 01 01 02 01 02
+
+encode-pair Foo-Bar = { Test-Integer = 1, Test-Boolean = yes }
+match 30 03 01 01 ff
+
+encode-pair Issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
+match 30 3f 31 24 30 22 06 03 55 04 0a 13 1b 44 69 67 69 74 61 6c 20 53 69 67 6e 61 74 75 72 65 20 54 72 75 73 74 20 43 6f 2e 31 17 30 15 06 03 55 04 03 13 0e 44 53 54 20 52 6f 6f 74 20 43 41 20 58 33